ANT - Java ClassLoader 找不到 class
ANT - Java ClassLoader cant find class
在我的项目中有两个 classes:TheProblem 和 Server。
public class TheProblem {
public static void main (String args []) throws ClassNotFoundException {
ClassLoader.getSystemClassLoader().loadClass("Server");
}
}
当我从命令行执行代码时,一切正常。
但是当我使用 ANT 执行代码时,我得到一个 ClassNotFoundException - 尽管 Server.class 和 TheProblem.class 都在同一个目录中。
我的项目的目录结构相当简单 - 我会在这里尝试说明:
root_folder/
- build.xml
- src/
- TheProblem.java
- Server.java
- build/
- TheProblem.class
- Server.class
这是我的 build.xml 文件的摘录:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="JAXB" default="compile">
<path id="project.class.path">
<pathelement path="${java.class.path}" />
<pathelement location="build" />
</path>
<target name="init" >
<mkdir dir="build" />
</target>
<target name="compile" depends="init" >
<javac classpathref="project.class.path" srcdir="src" destdir="build"
includeAntRuntime="false" />
</target>
<target name="execute-problem" depends="compile">
<java classpathref="project.class.path" classname="TheProblem" />
</target>
<target name="clean" depends="init">
<delete dir="build" />
</target>
</project>
当我执行ant compile时,一切都可以编译,但是当我执行ant execute-problem时,ClassLoader找不到服务器class 并抛出 ClassNotFoundException。
当我导航到构建目录并调用 java TheProblem 时,它工作得很好。我真的不知道,为什么它不能使用 ANT。
非常感谢您花时间阅读这篇文章post。
而不是
<target name="execute-problem" depends="compile">
<java classpathref="project.class.path" classname="TheProblem" />
</target>
尝试使用这个
<target name="execute-problem" depends="compile">
<java fork="true" dir="." classname="TheProblem">
<classpath>
<path refid="project.class.path" />
</classpath>
</java>
</target>
在我的项目中有两个 classes:TheProblem 和 Server。
public class TheProblem {
public static void main (String args []) throws ClassNotFoundException {
ClassLoader.getSystemClassLoader().loadClass("Server");
}
}
当我从命令行执行代码时,一切正常。 但是当我使用 ANT 执行代码时,我得到一个 ClassNotFoundException - 尽管 Server.class 和 TheProblem.class 都在同一个目录中。
我的项目的目录结构相当简单 - 我会在这里尝试说明:
root_folder/
- build.xml
- src/
- TheProblem.java
- Server.java
- build/
- TheProblem.class
- Server.class
这是我的 build.xml 文件的摘录:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="JAXB" default="compile">
<path id="project.class.path">
<pathelement path="${java.class.path}" />
<pathelement location="build" />
</path>
<target name="init" >
<mkdir dir="build" />
</target>
<target name="compile" depends="init" >
<javac classpathref="project.class.path" srcdir="src" destdir="build"
includeAntRuntime="false" />
</target>
<target name="execute-problem" depends="compile">
<java classpathref="project.class.path" classname="TheProblem" />
</target>
<target name="clean" depends="init">
<delete dir="build" />
</target>
</project>
当我执行ant compile时,一切都可以编译,但是当我执行ant execute-problem时,ClassLoader找不到服务器class 并抛出 ClassNotFoundException。 当我导航到构建目录并调用 java TheProblem 时,它工作得很好。我真的不知道,为什么它不能使用 ANT。
非常感谢您花时间阅读这篇文章post。
而不是
<target name="execute-problem" depends="compile">
<java classpathref="project.class.path" classname="TheProblem" />
</target>
尝试使用这个
<target name="execute-problem" depends="compile">
<java fork="true" dir="." classname="TheProblem">
<classpath>
<path refid="project.class.path" />
</classpath>
</java>
</target>