java - ANT - Java ClassLoader 找不到类

标签 java ant classpath classloader classnotfoundexception

在我的项目中,有两个类: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>

当我执行antcompile时,一切都会编译,但是当我执行antexecute-problem时,ClassLoader找不到Server类并抛出ClassNotFoundException。 当我导航到构建目录并调用 java TheProblem 时,它工作得很好。我真的不知道为什么使用 ANT 不起作用。

非常感谢您花时间阅读这篇文章。

最佳答案

而不是

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

关于java - ANT - Java ClassLoader 找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44108933/

相关文章:

java - SLF4J - 无论日志级别如何都进行日志记录

java - 如何从我从 `java` 目标派生的 Ant 任务中停止 Selenium 服务器?

ant - ANTLR 项目的 build.xml 示例?

java - 找不到 javax.xml.xquery :xqj-api:1. 0

c# - 桌面应用程序 : Architectural Frameworks?

java - 在 LibGDX 中模糊屏幕

java - 添加映射<String, Entity>时约束冲突合并实体

java - Ant : jar and zipfileset - copy files from one JAR into another

testing - 在gradle中,测试配置如何声明对另一个项目的测试配置的依赖关系?

java - 如何在类路径中的某个位置找到包含特定类的文件?