如何从命令行在窗口上运行.class文件?
我正在尝试从命令行运行.class文件。当我手动移动到它存储的目录时,它可以工作,但是当我尝试这样的事情时:
java C:\Peter\Michael\Lazarus\Main
它说它找不到主类。除了制作一个.jar文件之外,还有什么解决方案吗(我知道.jar是最好的解决方案,但目前不是我正在寻找的解决方案)?
我正在尝试从命令行运行.class文件。当我手动移动到它存储的目录时,它可以工作,但是当我尝试这样的事情时:
java C:\Peter\Michael\Lazarus\Main
它说它找不到主类。除了制作一个.jar文件之外,还有什么解决方案吗(我知道.jar是最好的解决方案,但目前不是我正在寻找的解决方案)?
Java 应用程序启动器(或简称)支持多达四种不同的方法来指定要启动的内容(取决于您使用的 Java 版本)。java.exe
java
指定类名是最基本的方法。请注意,类名与文件名不同。
java -cp path/to/classFiles/ mypackage.Main
在这里,我们启动类并使用开关指定用于查找类的类路径(类的完整路径将为 。mypackage.Main
-cp
mypackage.Main
path/to/classFiles/mypackage/Main.class
启动 jar 文件。
java -jar myJar.jar
这会将 jar 本身及其条目上指定的任何内容放在类路径上,并启动通过该条目指示的类。请注意,在这种情况下,您不能指定任何其他类路径条目(它们将被静默忽略)。Class-Path
Main-Class
Java 9 引入了模块,并引入了一种以类似于选项 #2 的工作方式启动特定模块的方法(通过启动该模块专用主类,或者在该模块中启动用户指定的类):
java --module my.module
Java 11 引入了对单文件源代码程序的支持,这使得执行适合单个源文件的 Java 程序变得非常容易。它甚至为您执行编译步骤:
java MyMain.java
此选项对于首次试验 Java 非常有用,但很快就会达到其限制,因为它不允许您访问在另一个源文件中定义的类(除非您单独编译它们并将它们放在类路径上,这破坏了此方法的易用性,这意味着在这种情况下,您应该切换回选项 #1)。
此功能被开发为JEP 330,有时仍然被称为JEP 330。
对于您的特定情况,您将使用选项#1,并使用该选项(或其缩写形式)告诉在何处查找该类:java
-classpath
-cp
java -classpath C:\Peter\Michael\Lazarus\ Main
如果你包含整个源代码(并且它在同一目录中),那么你可以使用选项#4,跳过编译步骤,直接编译并执行它:Main.java
java c:\Peter\Michael\Lazarus\Main.java
假设 没有包声明:Main.class
java -cp C:\Peter\Michael\Lazarus\ Main
Java在“类路径”中查找类,可以通过该选项在命令行上设置该类。-cp