我一直在研究课程路径并遇到了一个问题。 我使用下面的代码:
class AAA
{
public AAA()
{
System.out.println("AAA");
}
}
class BBB
{
public BBB()
{
System.out.println("BBB");
}
}
class ABMain
{
public static void main(String[] args)
{
AAA aaa=new AAA();
BBB bbb=new BBB();
}
}
在终端上,我做了:
当我检查子目录时,我发现AAA.class和BBB.class被正确移动了,但是当我尝试运行ABMain时,我得到以下内容:
线程“main”中的异常java.lang.NoClassDefFoundError:AAA 在ABMain.main(ABMain.java:17) 引起:java.lang.ClassNotFoundException:AAA at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ......还有1个
请您评论一下我应该改变什么才能让它发挥作用?提前谢谢。
答案 0 :(得分:0)
您需要在ABMain类之前导入sub的包,因为您的ABMain如何能够知道AAA和BBB的位置
我建议在AAA Class和BBB class之前使用
包子;
并通过在ABMain类
之前编写下面的代码来导入包import sub。*;
答案 1 :(得分:0)
根据标题,您使用LINUX。但是你的步骤适用于Windows生态系统。 要更正示例,您应该使用直接斜杠作为路径分隔符,并将当前目录添加为CLASSPATH替代(以便能够加载主类):
javac ABMain.java
mv AAA.class ./sub/AAA.class
mv BBB.class ./sub/BBB.class
java -cp ./sub:. ABMain