试图从Thinking in Java
编译.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
是一种实现JUnit
测试的,它会检查与使用反射@Test
注释方法。它将сlass的名称作为命令行参数进行检查。
但是,当我尝试编译原始文件时,编译器会抛出一个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)
。 AtUnit
尝试拨打Class.forName()
时会出现异常。
怎么了?
包的结构:
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
我想要做的第一件事是看看它是否在类路径上,你可以这样做https://www.mkyong.com/java/how-to-print-out-the-current-project- classpath/ –
你在UPD2中打印了哪个类路径?由于您正在生成一个新的java进程,因此classpath可能与您的主进程不同。 – NilsH
我编译了J Smith给我的代码 – luckystrrrike