【发布时间】:2009-07-15 04:43:45
【问题描述】:
我正在尝试在 Eclipse 中编译和运行一个简单的 java 类。编译任务工作正常,因为我没有指定目标文件夹,所以构建文件与源文件位于同一目录中。没关系,目前我只需要学习如何使用 main() 方法运行类。
我尝试过单独使用类的完全限定名(包括包名等)和类名,但总是得到 java.lang.ClassNotFoundException
Buildfile: C:\Users....\build.xml
run:
[java] java.lang.NoClassDefFoundError: code/control/MyClass
[java] Caused by: java.lang.ClassNotFoundException: code.control.MyClass
[java] at java.net.URLClassLoader$1.run(Unknown Source)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[java] Could not find the main class: code.control.MyClass. Program will exit.
[java] Exception in thread "main"
[java] Java Result: 1
compile:
default:
BUILD SUCCESSFUL
Total time: 234 milliseconds
以下是从我的 build.xml 文件中获取的目标:
<target name="default" depends="compile" description="learn">
</target>
<target name="compile" depends="run">
<javac srcdir="src/" />
</target>
<target name="run">
<java classname="code.control.MyClass" fork="true"/>
</target>
我无法弄清楚为什么找不到该课程。 MyClass 包含 main() 方法,由于我没有指定类路径,它应该查看当前目录,即 src/ 对吗?
开发目录是通常的eclipse文件结构:
projectName/src/code/control/MyClass
如果是类路径问题,我该如何解决?我一直难以理解“把它放在你的类路径”这个概念......如果有人可以在 ant 上下文中对类路径提供一点解释,我将非常感激。
感谢您对此的任何帮助。蚂蚁的版本是1.7.0
【问题讨论】:
-
请注意 ClassNotFoundExceptions 和 NoClassDefFoundErrors 不是同义词。
-
你有没有注意到你的目标“编译”依赖于“运行”?所以 run 会在编译前被调用... fix:
(...) (...)