Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClassNotFoundException与ant';s的java任务和类路径_Java_Ant_Classpath - Fatal编程技术网

ClassNotFoundException与ant';s的java任务和类路径

ClassNotFoundException与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

我试图在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/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文件复制到类路径指定的目录之一。如果要在包中复制某些内容,则需要所有目录。