在运行java程序时,报表找不到类

时间:2013-01-07 19:41:46

标签: java

文件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.

我已经尝试了很多次,但我找不到问题的解决方案。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您编译的类必须位于名为的目录中: home/city/Desktop/factorydemo

在Unix上,运行这个: mkdir -p home/city/Desktop/factorydemo; mv FactoryDemo.class home/city/Desktop/factorydemo/

为了获得最佳实践,只需将Java源文件移动到该文件夹​​中,以便编译器将文件输出到正确的位置。

答案 1 :(得分:1)

在根目录下创建FactoryDe​​mo类,您应该键入以下命令(。而不是/)

javac -d . FactoryDemo.java

它从当前目录开始创建home.city.Desktop.factorydemo目录。

如果您希望在根目录下创建类。您必须键入以下命令才能执行。

java -classpath / home.city.Desktop.factorydemo.FactoryDemo