文件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.
我已经尝试了很多次,但我找不到问题的解决方案。感谢您的帮助。
答案 0 :(得分:1)
您编译的类必须位于名为的目录中:
home/city/Desktop/factorydemo
在Unix上,运行这个:
mkdir -p home/city/Desktop/factorydemo; mv FactoryDemo.class home/city/Desktop/factorydemo/
为了获得最佳实践,只需将Java源文件移动到该文件夹中,以便编译器将文件输出到正确的位置。
答案 1 :(得分:1)
在根目录下创建FactoryDemo类,您应该键入以下命令(。而不是/)
javac -d . FactoryDemo.java
它从当前目录开始创建home.city.Desktop.factorydemo
目录。
如果您希望在根目录下创建类。您必须键入以下命令才能执行。
java -classpath / home.city.Desktop.factorydemo.FactoryDemo