1

ファイルFactoryDemo.javaは正常にコンパイルされ、その中に

package home.city.Desktop.factorydemo;   

を使用してコンパイルしましたjavac -d / FactoryDemo.javaが、何も問題は報告されていません。

しかし、 を使用して実行しようとするとjava home.city.Desktop.factorydemo.FactoryDemo、次のように報告されます:

Exception in thread "main" java.lang.NoClassDefFoundError: home/city/Desktop/factorydemo/FactoryDemo
Caused by: java.lang.ClassNotFoundException: home.city.Desktop.factorydemo.FactoryDemo
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: home.city.Desktop.factorydemo.FactoryDemo. Program will exit.

何度も試しましたが、問題の解決策を見つけることができませんでした。事前にご協力いただきありがとうございます。

4

2 に答える 2

1

コンパイルされたクラスは、次のディレクトリにある必要があります。 home/city/Desktop/factorydemo

Unixでは、これを実行するだけです。 mkdir -p home/city/Desktop/factorydemo; mv FactoryDemo.class home/city/Desktop/factorydemo/

ベストプラクティスとしては、Javaソースファイルもそのフォルダーに移動するだけで、コンパイラーがファイルを適切な場所に出力します。

于 2013-01-07T19:47:54.327 に答える
1

FactoryDe​​mo クラスはルート ディレクトリの下に作成されます。次のコマンドを入力する必要があります (/ の代わりに . )。

javac -d . FactoryDemo.java

home.city.Desktop.factorydemo現在のディレクトリから始まるディレクトリを作成します。

ルートディレクトリの下にクラスを作成したい場合。実行するには、次のコマンドを入力する必要があります。

java -classpath / home.city.Desktop.factorydemo.FactoryDemo
于 2013-01-07T20:11:25.897 に答える