我无法从命令行运行程序。我正在src文件夹中执行它,文件存储在包proj2中。

所以当我运行
java -cp "proj2/*;proj2/antlr-3.5.jar" proj2.myClass
我收到一个"Error: Could not find or load main class"
如果我删除类路径,然后写
java proj2.myClass
我得到java.lang.NoClassDefFoundError
如何正确使用类路径运行程序?

最佳答案

调用java proj2.myClass会尝试从 proj2 包中的类 myClass (按惯例,名称应为大写)运行main方法。

如果使用package proj2;声明了 myClass ,则必须在类路径条目的子文件夹 proj2 的子文件夹 proj2 中存在一个文件 myClass.class ,在给定的示例中,它应该是java -cp ".;proj2/antlr-3.5.jar" proj2.myClass,因此可以从proj2.myClass中搜索找到.

如果不需要antlr-3.5,则可以省略.

如果您的类没有声明包,则必须为java -cp "proj2;proj2/antlr-3.5.jar" myClass

您还应避免将类文件和jar文件混合在同一文件夹中,或通过相同的classpath条目进行访问,但应将jar和class子树分开。

09-04 19:52