0

友人のために小さなプログラムを作成しましたが、Windows マシンで実行すると問題なく動作します。しかし、私が彼でそれを実行すると、私は得る

Exception in thread "main" java.lang.NoClassDefFoundError: SupplierControl/jar
Caused by: java.lang.ClassNotFoundException: SupplierControl.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:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

なぜそれが一方ではなく他方で機能するのかわかりません

ありがとう

4

3 に答える 3

3

次のようなコマンドで実行しようとしているに違いありません。

java SupplierControl.jar

javaコマンドに渡すものは、完全修飾クラス名でなければならないことに注意してください。jar何が起こるかというと、Java はpackage で名前が付けられたクラスを探しますSupplierControl。それはあなたが意図したものではありません。

実行可能な JAR の場合は、次のように実行します。

java -jar SupplierControl.jar
于 2013-07-23T14:46:14.537 に答える
1

問題は、コマンドの実行方法にあります。これが「実行可能な」JAR ファイルであると仮定すると、次のように実行する必要があります。

$ java -jar SupplierControl.jar

しかし、あなたは-jar議論を省いたようです。


を省略する-jarと、コマンドは修飾されたクラス名としてjava解釈されます。SupplierControl.jarつまり、パッケージ「SupplierControl」内の「jar」というクラスです。もちろん、対応する「.class」ファイルを見つけることができずNoClassDefFoundError、結果として a が得られます。

于 2013-07-23T14:46:26.130 に答える
0

コマンドで実行する必要があります

$ java -jar SupplierControl.jar

次に、jar を実行すると、すべてがうまくいくはずです。

于 2013-07-23T14:48:32.943 に答える