2011-06-20 14 views
19

Tak, można to zrobić bardzo dobrze:Jak uruchomić klasę Java ze słojem w ścieżce klas?

java mypackage.MyClass 

jeśli ./mypackage/MyClass.class istnieje. Mogę też z radością to zrobić:

java -cp myjar.jar mypackage.MyClass 

jeśli plik klasy istnieje w odpowiedniej części słoika. Łatwe rzeczy. Ale nie mogę dla życia mnie udało się zrobić coś takiego:

java -cp utilities.jar mypackage.MyClass 

gdzie ./mypackage/MyClass.class istnieje i gdzie ./utilities.jar istnieje (nie zawierający MojaKlasa, oczywiście).

Czy mam się poczuć głupio?

Odpowiedz

39

Ewentualnie :)

# On Unix 
java -cp utilities.jar:. mypackage.MyClass 

# On Windows 
java -cp utilities.jar;. mypackage.MyClass 

Zasadniczo, że właśnie w tym . (w bieżącym katalogu) na ścieżce klasy, jak również pliku jar.

+0

Oh. Gah. * wstyd * – naiad

+0

Czy '-cp' jest krótką formą' -classpath'? – overexchange

+0

@overexchange: Tak. (Uruchamianie 'java -?' Powiedziałoby ci to.) –

5

Spróbuj tego, jeśli jesteś na Windows:

java -cp .;utilities.jar mypackage.MyClass 

albo to, czy jesteś na Linuksie:

java -cp .:utilities.jar mypackage.MyClass 

Bieżący katalog nie jest w CLASSPATH domyślnie Po określeniu wartość dla -cp.

+0

Nie, bieżący katalog * jest * domyślnie ścieżką klasy; to tylko wtedy, gdy podasz * inną * ścieżkę klasy, z którą masz problemy. –

+0

@Vuntic: To z pewnością byłoby dokładne. Może @duffymo chciałby edytować to słowo :) –

-1

Powinieneś dołączyć parametr mypackage.MyClass do parametru CLASSPATH lub -cp. Na przykład:

java -cp utilities.jar;myjar.jar mypackage.MyClass 

Separator ścieżki jest; w systemie Windows i: na systemie Unix/Linux

+0

, które mogę zrobić dobrze; MyClass jest w samodzielnym pliku klasy, a nie myjar.jar – naiad

Powiązane problemy