ClassNotFoundException与ant';s的java任务和类路径
我试图在eclipse中编译和运行一个简单的java类。编译任务工作正常,因为我没有指定目标文件夹,所以构建文件与源文件位于同一目录中。没关系,现在我需要的只是学习如何使用main()方法运行这个类 我曾尝试使用类的完全限定名(包括包名等)和单独的类名,但总是得到java.lang.ClassNotFoundExceptionClassNotFoundException与ant';s的java任务和类路径,java,ant,classpath,Java,Ant,Classpath,我试图在eclipse中编译和运行一个简单的java类。编译任务工作正常,因为我没有指定目标文件夹,所以构建文件与源文件位于同一目录中。没关系,现在我需要的只是学习如何使用main()方法运行这个类 我曾尝试使用类的完全限定名(包括包名等)和单独的类名,但总是得到java.lang.ClassNotFoundException Buildfile: C:\Users....\build.xml run: [java] java.lang.NoClassDefFo
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/right
开发目录是常用的eclipse文件结构:
projectName/src/code/control/MyClass
如果是类路径问题,我如何解决它?我总是很难理解“把它放在你的类路径上”这个概念。。。如果有人能在ant上下文中提供一些关于类路径的解释,我将非常感谢
谢谢你在这方面的帮助。ant的版本是1.7.0,Java运行时在其中查找.class文件,类似于操作系统使用PATH变量查找可执行文件的方式
在构建脚本中尝试以下操作:
<target name="run">
<java fork="true" classname="code.control.MyClass">
<classpath>
<path location="src/"/>
</classpath>
</java>
使用ant构建Java程序有一个简单的过程。您应该包括类路径,例如
<java classpath="${bin}" classname="code.control.MyClass">
其中${bin}是您的输出文件夹。如下更改build.xml并尝试:
<target name="default" depends="run" description="learn">
</target>
<target name="compile" >
<javac srcdir="src/" />
</target>
<target name="run" depends="compile">
<java classname="code.control.MyClass" fork="true"/>
</target>
注意ClassNotFoundExceptions和NoClassDefFoundErrors不是同义词。您是否注意到您的目标“编译”依赖于“运行”?所以在编译之前将调用run。。。菲克斯:(…)(…)谢谢赛斯,这很有效。只是想知道类路径,它不是在安装Eclipse时自动设置的吗?我知道我可以在命令行的任何目录中执行java-version。我以为这是自动处理的,但是当我需要在类路径上“放置一些东西”时,我该怎么做呢?希望我没有偏离原来的问题太多。再次感谢您使用“java-version”,即使用PATH变量查找java可执行文件。如果需要在类路径上放置一些内容,只需将.class文件复制到类路径指定的目录之一。如果要在包中复制某些内容,则需要所有目录。