2012-04-30 14 views
11

Ok Wiem, że to pytanie było zadawane wiele razy wiele razy, ale googlowałem i obejrzałem przykłady i przyjrzałem się pytaniom na temat SO przez ostatni miesiąc, a ja poważnie nie mogę tego uruchomić. Myślę, że problem polega na tym, że chcę móc uruchomić program zarówno z Eclipse, jak i z linii poleceń. Używam także OSX i myślę, że wiele przykładów, które czytam, dotyczy Windowsa/Linuksa.Dodawanie słoika do ścieżki klasy podczas uruchamiania z wiersza polecenia

Jeśli mam prosty program skompilowany w Eclipse, który chcę uruchomić z wiersza poleceń zrobić to:

java -cp bin MyProgram 

mam inny program skompilować i uruchomić w Eclipse, a to odwołuje się do JDBC MySQL connector (mysql-connector-java-5.1.19-bin.jar), który jest przechowywany w tym samym katalogu. To działa dobrze od Eclipse, ale nie mogę go uruchomić z wiersza poleceń.

Próbowałem wszystkie kombinacje rzeczy ...

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

i uzyskać wszystkie rodzaje klasa nie znaleziono błędów ...

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) 
+0

Cześć Matt, jeśli się nie mylę Myślę, że ścieżka klasy jest zadeklarować ścieżkę do głównej klasy, który chcesz wykonać. Tak więc w tym przypadku, jeśli twoja klasa znajduje się w folderze bin, po prostu spróbuj: java MyProgram lub java -cp myprogrampath MyProgram –

+1

@FedericoGiust Not specific; classpath po prostu definiuje archiwum lub ścieżkę do zestawu klas. Ścieżka klasy może lub nie może zawierać klasy działającej (co zazwyczaj powoduje błąd wyjątku lub błąd w prostej java.exe). Ścieżka Classpath może zawierać katalogi i archiwa, które nie mają uruchomionych klas. – Qix

+0

możliwy duplikat [linii poleceń Java z zewnętrznym .jar] (http://stackoverflow.com/questions/6069702/java-command-line-with-external-jar) –

Odpowiedz

13

Twój problem to używany separator min. Separator ; dotyczy okien. W systemach Unix należy użyć : zamiast:

java -classpath "bin: mysql-connector-java-5.1.19-bin.jar" MojProgram

0

że nie ustawić główne klasy w classpaht spróbuj dodać ./ w Cp

+0

Wątpię, czy obecny katalog zawiera jego główną klasę, Sądzę, że "bin" zawiera je. –

+0

'MójProgram' musi być ustawiony na ścieżkę klas, również musisz dodać nazwę pachage, jeśli umieścisz' MyProgram' w paczce. – user1335794

+0

Nie martw się, wiem wszystko o ścieżce klasowej i pełnej nazwie. Mówię tylko, że dodanie bieżącego katalogu do ścieżki klasy jest bezużyteczne, jeśli jego klasy znajdują się w katalogu bin. –

5

użyć „:” oddzielić swoje wpisy na systemach Unix:

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 konwertuje je automatycznie.

+0

Jakikolwiek powód ucieczki dwukropek? –

+0

nie, po prostu źle wyciąć/wkleić ... Naprawiłem to – mprivat

-2

Gorąco polecam spróbować --jar lub -jar . Nie pamiętam, co to jest, ale ci powinni cię załatwić. Ponadto, jeśli masz narzędzia deweloperskie od Apple, mają one pakowarkę jar.

+1

Jest -jar, ale jego lekcje są jawne. Zapomnij o narzędziach programistycznych Apple, które pochodzą z poprzedniego wieku. Eclipse, NetBEans i IntelliJ wyprzedzają te lata świetlne. –

+0

@GuillamePolet Agrred, ale wspomniałem tylko, że robią to z narzędziami do tworzenia aplikacji ze słoików –

1

Patrz:

String pathSeparator = System.getProperty("path.separator"); 
Powiązane problemy