Ich versuche, eine Mac OS X-Anwendung von Java Desktops.jar, wo meine Anwendung .jar-Datei mit derby eingebetteten Datenbank APPDATA erstellen. Es schafft Problem, wenn ich createing eine Mac OS X-Anwendung .appDerby eingebettete Datenbank 'APPDATA' Ordner nicht gefunden, Versuchen OS X-Anwendung zu erstellen .app
Hier ist meine Verbindungsmethode auf Java (arbeitet bereits an .exe und Setup-Windows-& Linux)
public static Connection getdataconnet() {
Connection connect = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
connect = DriverManager.getConnection("jdbc:derby:APPDATA", "xxxx", "xxxxxxxxxxxxxxx");
} catch (ClassNotFoundException ex) {
globalData.GlobalDataSetGet.OLD_USER = -1;
////JOptionPane.showMessageDialog(null, "1"+ex);
} catch (SQLException ex) {
globalData.GlobalDataSetGet.OLD_USER = -1;
////JOptionPane.showMessageDialog(null, "2"+ex);
}
return connect;
}
Mac OS X Anwendungsarchitektur .app
APPDATA nicht von .jar gefunden, nachdem eine Mac OS X-Anwendung .app Erstellen CWD
Mit ..
Connection connect = null;
Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
try {//DriverManager.getConnection("jdbc:derby:"+System.getProperty("user.dir")+"/APPDATA", "#####", "#############");
connect = DriverManager.getConnection("jdbc:derby:"+s+"/APPDATA", "#####", "#############");
} catch (ClassNotFoundException ex) {
globalData.GlobalDataSetGet.OLD_USER = -1;
JOptionPane.showMessageDialog(null, "1"+ex);
} catch (SQLException ex) {
globalData.GlobalDataSetGet.OLD_USER = -1;
JOptionPane.showMessageDialog(null, "2"+ex);
}
Verbindung connect = null; Pfad currentRelativePath = Paths.get (""); Zeichenfolge s = currentRelativePath.toAbsolutePath(). ToString(); versuchen { Class.forName ("org.apache.derby.jdbc.EmbeddedDriver"); connect = DriverManager.getConnection ("jdbc: derby:" + s + "/ APPDATA", "xxx", "lxxxxx"); } // Ich benutze diese CWD, aber immer noch nicht funktioniert .. –
Sehr geehrter Herr, Es ist eine gute Idee, dynamische CWD zu definieren, aber es immer noch Problem, wenn ich versuche, auf meine 'abc.app' zuzugreifen. –
Direkt vor dem 'DriverManager.getConnection'-Aufruf, drucken Sie" s "aus, wie in:' System.out.println (s); '.Überprüfen Sie dann, ob diese Zeichenfolge tatsächlich auf den Ordner verweist, in dem APPDATA gespeichert ist. Wenn nicht, muss es. –