Ant 문제로 인해 계속 괴롭 히고 있으며 해결책을 찾지 못했습니다. 나는 완료 자바의 RMI 프로젝트를 가지고 있고, 아래 파일 :내 프로그램을 실행하려고 할 때 앤트 오류가 발생합니다.
<project name="StockageRMI" default="compile">
<target name="compile">
<javac destdir="classes">
<src path="src/db/"/>
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</javac>
<javac destdir="classes">
<src path="src/stockage"/>
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</javac>
<javac destdir="classes">
<src path="src/server"/>
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</javac>
<javac destdir="classes">
<src path="src/client"/>
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</javac>
</target>
<target name="rmic" depends="compile">
<rmic classname="stockage.StockageImpl" base="classes/">
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</rmic>
</target>
<target name="runServer" depends="rmic,runStockage">
<java classname="server.ServerImpl" fork="true" failonerror="true" >
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</java>
</target>
<target name="runStockage">
<java classname="stockage.StockageImpl" fork="true" failonerror="true" >
<classpath>
<fileset dir="lib/">
<include name="**/*.jar" />
</fileset>
<fileset dir="classes/">
<include name="**/*.class" />
</fileset>
</classpath>
</java>
</target>
</project>
대상 "컴파일"와 "rmic를"일 잘 나가 "runStockage"를 실행하려고 할 때 문제가 있습니다. 다음과 같은 에러가 발생합니다
Exception in thread "main" java.lang.NoClassDefFoundError: stockage/StockageImpl
[java] Caused by: java.lang.ClassNotFoundException: stockage.StockageImpl
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[java] Java Result: 1
내가 터미널에서이 작업을 수행하려고하면, java 명령이 잘 작동하고 같은 종속성이 있기 때문에, javac의 같은 클래스 경로를 가지고 있기 때문에 이것은 매우 이상하다 :
javac -cp lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes -d classes src/stockage/StockageImpl.java
rmic -classpath lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes -d classes stockage.StockageImpl
java -classpath lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes server.ServerImpl
위의 세 명령 모두 제대로 작동하지만 문제는 개미입니다. 보시다시피, javac, java 및 rmic는 동일한 종속성 및 jar 파일을 사용하므로 Ant에서 동일한 작업을 수행했지만 작동하지 않습니다. 나는 그것이 중간에 무언가 어리 석다라고 확신한다. 그러나 나는 지난 6 시간 동안 그것을 이해할 수없는 것처럼 보인다. 누구나 단서가 있니?