2009-07-27 12 views
14

Makinemdeki herhangi bir yerden çalıştırmak istediğim bir java programım var. Cygwin komut isteminden çalıştırmak istiyorum. Java programını çağırmak için senaryo yaptım. Java programının yerini sınıf yoluna ekledim ve komut dosyaları java programın dizininden çalıştırdığımda çalışır. Ben başka bir dizinden çalıştırmayı denediğinizde Ancak, alıyorum:Farklı bir dizinden bir java programını nasıl çalıştırırım?

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

aşağıdaki java hattını değiştirme:

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

üreten Bu benim senaryom

java.lang.NoClassDefFoundError: commandprogram/CommandProgram 

aynı sonuçlar.

+0

insanlara –

+0

java commandprogram/CommandProgram.class veya java jar commandprogram/commandProgram yapmak gerek yok ... bakmak için nereye daha iyi bir fikir vereceğini, senaryonuzu sonrası olabilir .jar? –

+0

yol ayırıcı bir kolon değil (:) yerine kullandığınız noktalı virgül (;) yerine? –

cevap

3

sadece düşünebildiğim her konuda denedikten sonra ben komuta ve testere dışarı yankılandı Cygwin yollarının ve Windows yollarının karıştırılması oldu. yerine "/ cygdrive/c/Program \ Files/..."

:

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

Sonra CWD "\ Program Files \ ... C" olarak değiştirildi: Çözüm senaryoyu değiştirmek oldu

Daha önce bu sorunla karşılaştı ve cygpath -w çözümü ile çözdüm, ancak daha sonra komutumu biraz değiştirdim ve yol sorununun geri geldiğini fark etmedim.

20

örnek classpath için dizin ekleyin:

java -classpath commandprogram CommandProgram 

veya

java -classpath directory_to_program Program 
1

sen değil, bir çizgi paketleri ayırmak için bir nokta kullanmak zorunda.

java cp "$ CWD/sınıfları; $ CWD/lib/AJarFile.jar" commandprogram.CommandProgram

+0

/da çalışıyor. Komut dosyasıyla dizinde olduğumda betiğin çalıştığını unutmayın. – Swoogan

-4

bir java dosyasını çalıştırarak olağan yolu cmd aşağıdaki kullanabilirsiniz, bu tür D: gibi farklı dizinde dosyayı kaydederseniz Java/Bin klasörüne kaydetmek ve cmd

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

Run etmektir istemi:

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

Java 'bin' dizinindeki java dosyalarınızı veya sınıf dosyalarınızı kaydetmek aslında çok sıra dışıdır ve bundan kaçınılmalıdır. Java 'bin' dizini Java'nın kendi ikili dosyaları ve * hiçbir şey * için. – Mac