2017-08-04 3 views
0

.javaファイルをThinking in Javaからコンパイルしようとしました。Class.forName()のクラスが見つかりません

package pck; 
/... 
public class AtUnitExample1 { 
    public String methodOne() { return "This is methodOne"; } 
    @Test boolean testMethodOne() { return methodOne().equals("This is methodOne"); } 
    // ... 
    public static void main(String[] args) throws Exception { 
     // OSExecute.command("java net.mindview.atunit.AtUnit pck.AtUnitExample1"); // ORIGINAL 
     OSExecute.command("java -classpath ./out/production/Exercises/ net.mindview.atunit.AtUnit pck.AtUnitExample1"); // My version 
    } 
} 

СlassAtUnitは、リフレクションを使用して@Test注釈付きメソッドをチェックし、JUnit試験の実現の一種です。そして、それはコマンドラインの引数として検査するための名前を取ります。

しかし、元のファイルをコンパイルしようとすると、OSExecuteExceptionというCould not find or load main class net.mindview.atunit.AtUnitがスローされます。

私はそれがクラスの異なる場所に問題があり、コマンドを変更したと考えました。この場合、私はFileNotFoundExceptionメッセージを持っています:/mnt/data-disk/MEGA/Программирование/Java/Exercises/pck.AtUnitExample1.class (No such file or directory)AtUnitClass.forName()に電話をかけようとすると例外が表示されます。

どういうところが間違っていますか?

パッケージの構造:

enter image description here

enter image description here

UPD:私はキリル文字記号でフォルダの名前を変更し、それは助けにはなりません。

UPD2:プロジェクトのクラスパス:

/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/cldrdata.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/dnsns.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/icedtea-sound.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jaccess.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/localedata.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunec.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunjce_provider.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunpkcs11.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/zipfs.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar 
/mnt/data-disk/MEGA/Programming/Java/Exercises/out/production/Exercises/ 
/home/nikita/Downloads/javassist-3.9.0.GA.jar 
/opt/idea-IC-172.3317.76/lib/idea_rt.jar 
+0

私が最初に行うことは、クラスパス上にあるかどうかを確認することです。https://www.mkyong.com/java/how-to-print-out-the-current-project- classpath/ –

+0

UPD2で印刷したクラスパスはどれですか?新しいJavaプロセスを生成するので、クラスパスはメインプロセスと異なる場合があります。 – NilsH

+0

J Smithが私に送ったコードを編集しました – luckystrrrike

答えて

0

私は解決策を持っています。私はちょうどOSExecute.command()のコマンドを変更しました、私の場合によると、そこにはjava -classpath ./out/production/Exercises/ net.mindview.atunit.AtUnit ./out/production/Exercises/pck/AtUnitExample1.classでなければなりません。

関連する問題