Eclipse内で単純なJavaクラスをコンパイルして実行しようとしています。コンパイルタスクはうまく動作し、コピー先のフォルダを指定しないので、ビルドファイルはソースと同じディレクトリにあります。私が必要とするのは、main()メソッドでどのようにクラスを実行できるかを知ることだけです。AntのjavaタスクとクラスパスでClassNotFoundExceptionが発生する
は私が単独でクラス名(パッケージ名、などで)クラスの完全修飾名を使用してみましたが、いつも私は目標が取られ、
Buildfile: C:\Users....\build.xml
run:
[java] java.lang.NoClassDefFoundError: code/control/MyClass
[java] Caused by: java.lang.ClassNotFoundException: code.control.MyClass
[java] at java.net.URLClassLoader$1.run(Unknown Source)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[java] Could not find the main class: code.control.MyClass. Program will exit.
[java] Exception in thread "main"
[java] Java Result: 1
compile:
default:
BUILD SUCCESSFUL
Total time: 234 milliseconds
以下にjava.lang.ClassNotFoundExceptionに取得します私のbuild.xmlファイルから:
<target name="default" depends="compile" description="learn">
</target>
<target name="compile" depends="run">
<javac srcdir="src/" />
</target>
<target name="run">
<java classname="code.control.MyClass" fork="true"/>
</target>
私はクラスが見つからない理由を理解できません。 MyClassにはmain()メソッドが含まれています。クラスパスを指定しないので、現在のディレクトリを参照する必要があります。これはsrc/rightですか?
開発ディレクトリは、通常の日食のファイル構造である:
PROJECTNAME/SRC /コード/制御/ MyClassの
それはクラスパスの問題であればどのように私はそれを解決するだろうか?私はいつも "あなたのクラスパスに入れてください"というコンセプトをつかむ問題を抱えていました...誰かがクラスパスでの蟻の文脈の説明を少し提供できれば、とても感謝しています。
ありがとうございました。 antのバージョンは1.7.0
ノートにClassNotFoundExceptionsとNoClassDefFoundErrorsは同義ではないこと。 – akf
ターゲット "コンパイル"が "実行"に依存していることに気付きましたか? だから、実行をコンパイルする前に呼び出されます... 修正: (...) <ターゲット名は= "コンパイル"><ターゲット名= "実行" を依存= "コンパイル"> (.. 。) –