2012-02-21 23 views
0

私はシェルスクリプトでこのコマンドを使用してjarファイルを実行しようとしています -クラスパス・エラー - メインクラスを見つけることができませんし、log4jの

java -Dlog4j.configuration=path/to/log4j.properties -classpath path/to/log4j.jar:path/to/another.jar -cp my/jarfile/to/run/myjar.jar com.xyz.TestSuiteRunner CREATE_4_SL 

しかし、私はこれを実行したときに示したように、私はエラーを取得する -

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 

at com.xyz.TestSuiteRunner.<clinit>(TestSuiteRunner.java:27) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger 
    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) 
    ... 1 more 
Could not find the main class: com.xyz.TestSuiteRunner. Program will exit. 

他の類似の記事を参照した後、マニフェストファイルを使用して実行可能なjarファイルを作成できますが、そのようにしたくありません。誰でも私にここで間違っているのを教えてもらえますか?

答えて

1

-classpath-cpの両方のスイッチがあります。 -cpは、-classpathの略語であり、複数指定することはできません。最後の1つは "スティック"なので、最初の-classpathスイッチに指定されたクラスは見つかりません。これらの引数を1つの長いパスにまとめる必要があります。すなわち、

-classpath path/to/log4j.jar:path/to/another.jar:my/jarfile/to/run/myjar.jar 

メインクラスを見つけることができないというエラーは、少し赤いニシンです。クラスが明確に見つかった場合、依存関係が見つからないため初期化できません。

+0

これは機能します。ありがとうございました –

関連する問題