2009-07-27 20 views
14

Mam program java, który chciałbym móc uruchomić z dowolnego miejsca na moim komputerze. Chciałbym uruchomić go z wiersza poleceń Cygwin. Przygotowałem skrypty do wywoływania programu java. Dodałem lokalizację programu java do ścieżki klasy, a skrypty działają, gdy uruchomię je z katalogu programu java. Jednak, gdy próbuję uruchomić z dowolnego innego katalogu, otrzymuję:Jak uruchomić program java z innego katalogu?

java.lang.NoClassDefFoundError: commandprogram/CommandProgram 

To jest mój skrypt:

#!/bin/sh 
CWD=`dirname "$0"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

Zmiana linii java na następujące kwestie:

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram 

produkuje te same wyniki.

+0

można pisać skrypt, który będzie dać ludziom lepsze wyobrażenie o tym, gdzie patrzeć ... –

+0

nie trzeba robić java commandprogram/CommandProgram.class lub java -jar commandprogram/commandProgram .słoik? –

+0

nie jest "separatorem ścieżki dwukropkiem (:) zamiast średnika (;), którego użyłeś? –

Odpowiedz

3

Po wypróbowaniu prawie wszystko, co mogę myśleć, że echem na komendę i piłę że było mieszanie ścieżek Cygwin i ścieżek Windows. Rozwiązaniem było zmienić scenariusz do:

#!/bin/sh 
CWD=`dirname "$0"` 
CWD=`cygpath -w "$CWD"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

Następnie CWD zmieniona na "C: \ Program Files \ ..." zamiast "/ cygdrive/c/Program \ Files/..."

Wcześniej napotkałem ten problem i rozwiązałem go za pomocą rozwiązania cygpath -w, ale potem nieznacznie zmieniłem skrypt i nie zauważyłem, że problem z ścieżką powrócił.

20

dodać katalog do ścieżki klasy przykład:

java -classpath commandprogram CommandProgram 

lub

java -classpath directory_to_program Program 
1

trzeba użyć kropki do oddzielenia pakietów, a nie ukośnika.

Java Cp "$ CWD/klas; $ CWD/lib/AJarFile.jar" commandprogram.CommandProgram

+0

/działa również. Należy pamiętać, że skrypt działa, gdy jestem w katalogu ze skryptami. – Swoogan

-4

Zwykłym sposobem prowadzenia plik Java, aby zapisać go w folderze Java/Bin i uruchomić cmd

C:\Program Files\Java\jdk1.7.0_05\bin> javac filename.java && java classname 

Jeśli zapiszesz plik w innym katalogu, takich jak D:, można użyć następujących w cmd monit:

D:\Project java> set path=%path%;C:Program Files\Java\jdk1.7.0_05\bin 
+7

Zapisywanie plików Java lub plików klas w katalogu 'bin' Java jest w rzeczywistości bardzo nietypowe i powinno się ich unikać. Katalog 'bin' języka Java jest przeznaczony dla własnych plików binarnych Java i * niczego * innego. – Mac

Powiązane problemy