을 찾을 수 없습니다. 그 중에서도 두 가지 클래스 인 TheProblem과 Server가 있습니다.ANT - Java ClassLoader는 내 프로젝트에서 클래스
public class TheProblem {
public static void main (String args []) throws ClassNotFoundException {
ClassLoader.getSystemClassLoader().loadClass("Server");
}
}
명령 줄에서 코드를 실행하면 모든 것이 올바르게 동작합니다. 하지만 ANT를 사용하여 코드를 실행하면 ClassNotFoundException이 발생합니다. Server.class와 TheProblem.class는 모두 같은 디렉토리에 있지만.
내 프로젝트의 디렉토리 구조는 매우 간단하다 - 난 여기가 설명하기 위해 노력할 것입니다 : 나는 실행
<?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>
: 여기
root_folder/
- build.xml
- src/
- TheProblem.java
- Server.java
- build/
- TheProblem.class
- Server.class
내 build.xml 파일의 발췌 한 것입니다
개 컴파일 모든 것이 컴파일되지만
개 실행 문제 인을 실행하면 ClassLoader는 Server 클래스를 찾을 수 없으며 ClassNotFoundException을 발생시킵니다. 빌드 디렉토리로 이동하여
java TheProblem을 호출하면 올바르게 작동합니다. 나는 정말로 단서가 없다. 왜 ANT를 사용하지 않는지.
이 게시물을 읽는 데 시간을내어 주셔서 감사합니다. 대신
<target name="execute-problem" depends="compile">
<java classpathref="project.class.path" classname="TheProblem" />
</target>
시도의
를 사용하여 패키지를 사용할 수 있습니다. 클래스 로딩은 훨씬 쉽고 안정적입니다. –
여전히 작동하지 않습니다. 모든 클래스를 "기본"패키지에 넣고 동일한 예외를 계속 가져옵니다. - 그러나 명령 행에서 프로그램을 실행해도 여전히 작동합니다. –