を見つけることができません。特に、問題とサーバーの2つのクラスがあります。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ファイルの抜粋です。
antコンパイル、すべてがコンパイルされますが、
ant実行問題を実行すると、ClassLoaderはServerクラスを見つけることができず、ClassNotFoundExceptionをスローします。 ビルドディレクトリに移動して
というjava TheProblemを呼び出すと、うまく動作します。私は本当に手がかりがない、なぜそれがANTを使用して動作しません。
この投稿を読んでいただきありがとうございます。
使用パッケージを使用してみてください。クラスローディングははるかに簡単で信頼性の高いものになります。 –
まだ動作しません。すべてのクラスを「メイン」パッケージに入れて、同じ例外を取得するだけです。 - しかし、コマンドラインからプログラムを実行しても動作します。 –