webentwicklung-frage-antwort-db.com.de

Hinzufügen von jar zu classpath bei Ausführung von der Befehlszeile aus

Ok, ich weiß, dass diese Frage schon viele Male gestellt wurde, aber ich habe gegoogelt und Beispiele angeschaut und Fragen zu SO für den letzten Monat angeschaut, und ich kann das wirklich nicht erreichen. Ich denke, das Problem ist, dass ich das Programm sowohl über Eclipse als auch über die Befehlszeile ausführen kann. Ich verwende auch OSX und denke, viele der Beispiele, die ich lese, sind für Windows/Linux.

Wenn ich ein einfaches Programm in Eclipse kompiliert habe, das ich von der Befehlszeile aus ausführen möchte, mache ich Folgendes:

Java -cp bin MyProgram

Ich habe ein anderes Programm, das ich in Eclipse kompiliere und ausführte, und dieses verweist auf den MySQL-JDBC-Connector (mysql-connector-Java-5.1.19-bin.jar), der im selben Verzeichnis gespeichert ist. Dies funktioniert gut mit Eclipse, aber ich kann es nicht von der Befehlszeile aus ausführen.

Ich habe alle Kombinationen von Sachen ausprobiert ...

Java -classpath "bin;mysql-connector-Java-5.1.19-bin.jar" MyProgram
Java -cp bin\;mysql-connector-Java-5.1.19-bin.jar MyProgram

und alle möglichen Klassenfehler nicht gefunden ...

Exception in thread "main" Java.lang.NoClassDefFoundError: MyProgram
Caused by: Java.lang.ClassNotFoundException: MyProgram
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
11
Matt

Ihr Problem ist das von Ihnen verwendete Min-Trennzeichen. Das Trennzeichen ; ist für Windows. Auf Unix-Systemen sollten Sie stattdessen : verwenden:

Java-Klassenpfad "bin: mysql-connector-Java-5.1.19-bin.jar" MyProgram

13
AlexR

Verwenden Sie ein ':', um Ihre Einträge auf Unix-Systemen zu trennen:

Java -classpath "bin:mysql-connector-Java-5.1.19-bin.jar" MyProgram
Java -cp bin:mysql-connector-Java-5.1.19-bin.jar MyProgram

Eclipse konvertiert es automatisch.

5
mprivat

Sehen: 

String pathSeparator = System.getProperty("path.separator");
1
Andrew Thompson

sie haben Ihre Hauptklasse nicht in classpaht festgelegt. Fügen Sie ./ in -cp hinzu

0
user1335794