有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ClassNotFoundException与ant的java任务和类路径

我试图在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

下面是我构建的目标。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


共 (3) 个答案

  1. # 1 楼答案

    classpath是Java运行时查找您的。类文件,类似于操作系统使用PATH变量查找可执行文件的方式

    在构建脚本中尝试以下操作:

       <target name="run">
        <java fork="true" classname="code.control.MyClass">
            <classpath>
                <path location="src/"/>
            </classpath>
        </java>
    

    这里有一个HelloWorld version for ant介绍了如何使用ant构建Java程序

  2. # 2 楼答案

    你应该包括类路径,例如

    <java classpath="${bin}" classname="code.control.MyClass">
    

    其中${bin}是您的输出文件夹

  3. # 3 楼答案

    改变你的身材。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>