2011-11-02 18 views
6

私の質問はパスにjarファイルを含めることです。それは2つの部分を持っています。私は、このjarファイルに/home/andy/software/weka/weka.jarPATHとCLASSPATHが設定されているにもかかわらずjarファイルを実行できません

PATH変数のポイントに位置weka.jar jarファイルを実行しようとしています

1)(すなわちへ/ホーム/アンディ/ソフトウェア/weka/weka.jar)、CLASSPATHもそうです。

ただし、java -jar weka.jarを使用してjarを実行しようとすると、「jarfile weka.jarにアクセスできません」というエラーが表示されます。

何が起こっているのですか?私はUbuntu Linuxです。私はSOを見渡しました.PATHとCLASSPATHの両方が正しく設定されているように見えるので、明らかに間違っていることはしていないようです。

2)すべてのjarファイルを1つのディレクトリに入れて、そのディレクトリを(個々のjarファイルを個別に含めるのではなく)パスに含めることができます。どうやってやるの?

ありがとうございます。

EDIT 1 - >ここに私のコマンドラインです

[email protected]:~$ export CLASSPATH=$CLASSPATH:/home/andy/research/software/weka/weka.jar 
[email protected]:~$ echo $CLASSPATH 
:/home/andy/research/software/weka/weka.jar 
[email protected]:~$ java -jar weka.jar 
Unable to access jarfile weka.jar 
[email protected]:~$ java weka.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: weka/jar 
Caused by: java.lang.ClassNotFoundException: weka.jar 
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:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: weka.jar. Program will exit. 
[email protected]:~$ 

EDIT 2 - >私は '/ /ホーム/アンディ/研究/ソフトウェア/ WEKA' ディレクトリを指し、まだ「までできなかっ取得するには、PATH変数を変更jarファイルへのアクセスエラー '

+0

'〜'の代わりに '$ HOME'を使ってみてください。 –

+0

実際は私は完全なパスを使いました:/home/andy/software/weka/weka.jar。申し訳ありません。 – user721975

+1

-jarはクラスパスが無視されることを意味します – micfra

答えて

1

jarがクラスパスにある場合、ライブラリがjvmで使用可能であることを意味します。 jarファイルを実行したい(mainを実行する)場合でも、ファイルへの有効なパスを指定する必要があります。

+1

申し訳ありませんが、わかりません。とにかくフルパスを提供する必要があるたびにクラスパスに追加する点は何ですか? – user721975

9

1)-jarオプションは、CLASSPATHの使用を無効にします。クラスパスの各エントリは、拡張.jarまたは.JARを持つディレクトリ内のすべてのファイルのリストを指定するのと同じと考えられているベース名のワイルドカード文字を含めることができSetting the CLASSPATH of Weka

2)をご覧ください。たとえば、クラスパスエントリfoo/は、fooというディレクトリ内のすべてのJARファイルを指定します。 *の単純なクラスパスエントリは、現在のディレクトリ内のすべてのjarファイルのリストに展開されます。見てくださいSetting the class path|Understanding class path wildcards

+0

-jarを付けずに実行すると、「スレッドの例外」メインの「java.lang.NoClassDefFoundError:weka/jar」例外が発生します。 – user721975

+0

質問を編集してCLASSPATHとコマンドラインを追加してください。上記のWeka wikiへのリンクと比較しましたか? – micfra

+0

はい、私はしました。私はwekaを 'java -cp $ CP -Xmx500m weka.gui.explorer.Explorer'を使って呼び出すことができましたが、私は実際にjarファイルを直接実行できるようにしたいのです(java weka.jar)。一般的な実行方法が必要なのでjarファイルをパスに含めることによって私はあなたが提案したように質問を更新しています。ありがとう。 – user721975

1

アクセスできません* .jarはjavaがこのjarファイルを見つけることができないことを意味します。 jarがあるフォルダからこのコマンド(java -jar weka.jar)を実行するか、PATH変数を修正する必要があります。 jarファイルが直接配置されるのではなく、jarが配置されるFOLDERを指す必要があります。

+0

それは事実です。私はいつもフォルダに入れたくないし、まだjarファイルを実行できるようにしたい。実際にはPATH変数は '/ home/andy/research/software/weka /'というディレクトリを指しています。 – user721975

+0

@ user721975あなたはなぜ 'java -jar/my/path/to/jar'を実行できないのですか?私はそれがとにかく最良のアイデアではないと思う - あなたの特定のjarの場所をシステムの 'path'変数に置く – javagirl

3

あなたはjarファイルINSIDEクラスのいずれかの名前を付け

代わり
java -jar weka.jar 

として実行されません。

クラスパスを設定せずに、簡単な例:

java -jar /home/andy/research/software/weka/weka.jar weka.core.SystemInfo 

簡単な例セットクラスパス使用:

export CLASSPATH=$CLASPATH:/home/andy/research/software/weka/weka.jar 

java weka.core.SystemInfo 

をもっと複雑な例:

と同じフォルダにあなたを想定し
export WEKA_HOME=/home/andy/research/software/weka/ 

export CLASSPATH=$CLASPATH:$WEKA_HOME/weka.jar 

export HEAP_OPTION=-Xms4096m -Xmx8192m 
export JAVA_COMMAND=java $HEAP_OPTION 

$JAVA_COMMAND weka.core.SystemInfo 
0

weka.jarあなたが必要とするのは、前に./ですjarの名前

java -jar ./weka.jar weka.core.SystemInfo 
関連する問題