我正在尝试从命令行运行 .class 文件。当我手动移动到它存储的目录时它会工作,但是当我尝试这样的事情时:
java C:\Peter\Michael\Lazarus\Main
它说它找不到主类。除了制作 .jar 文件之外,还有其他解决方案吗(我知道 .jar 是最好的解决方案,但目前不是我要找的那个)?
原文由 AndrejaKo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试从命令行运行 .class 文件。当我手动移动到它存储的目录时它会工作,但是当我尝试这样的事情时:
java C:\Peter\Michael\Lazarus\Main
它说它找不到主类。除了制作 .jar 文件之外,还有其他解决方案吗(我知道 .jar 是最好的解决方案,但目前不是我要找的那个)?
原文由 AndrejaKo 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设 Main.class
没有包声明:
java -cp C:\Peter\Michael\Lazarus\ Main
Java 在“类路径”中查找类,可以通过 -cp
选项在命令行上进行设置。
原文由 Michael Borgwardt 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
Java 应用程序启动器(又名
java.exe
或简称java
)最多支持四种不同的方式来指定要启动的内容(取决于您使用的 Java 版本)。在这里,我们启动类
mypackage.Main
并使用-cp
开关指定用于查找类的类路径(类的完整路径mypackage.Main
path/to/classFiles/mypackage/Main.class
。这会将 jar 本身和在其
Class-Path
条目上指定的任何内容放在类路径上,并启动通过Main-Class
条目指示的类。请注意,在这种情况下,您 不能 指定任何其他类路径条目(它们将被静默忽略)。这个选项对于第一次尝试 Java 很有用,但很快就会达到极限,因为它不允许您访问在另一个源文件中定义的类(除非您单独编译它们并将它们放在类路径中,这会失败这种方法的易用性意味着在这种情况下你应该切换回选项#1)。
此功能作为 JEP 330 开发,有时仍被称为 JEP 330。
对于您的特定情况,您将使用选项 #1 并告诉
java
使用-classpath
选项(或其缩写形式-cp
)在哪里查找该类:如果 您的
Main.java
包含您的全部源代码(并且它在同一目录中),那么您可以使用选项 #4,跳过编译步骤并直接编译并执行它: