如何从命令行在窗口上运行.class文件?

2022-09-01 20:06:41

我正在尝试从命令行运行.class文件。当我手动移动到它存储的目录时,它可以工作,但是当我尝试这样的事情时:

java C:\Peter\Michael\Lazarus\Main

它说它找不到主类。除了制作一个.jar文件之外,还有什么解决方案吗(我知道.jar是最好的解决方案,但目前不是我正在寻找的解决方案)?


答案 1

Java 应用程序启动器(或简称)支持多达四种不同的方法来指定要启动的内容(取决于您使用的 Java 版本)。java.exejava

  1. 指定类名是最基本的方法。请注意,类名文件名不同。

     java -cp path/to/classFiles/ mypackage.Main
    

    在这里,我们启动类并使用开关指定用于查找类的类路径(类的完整路径将为 。mypackage.Main-cpmypackage.Mainpath/to/classFiles/mypackage/Main.class

  2. 启动 jar 文件。

    java -jar myJar.jar
    

    这会将 jar 本身及其条目上指定的任何内容放在类路径上,并启动通过该条目指示的类。请注意,在这种情况下,您不能指定任何其他类路径条目(它们将被静默忽略)。Class-PathMain-Class

  3. Java 9 引入了模块,并引入了一种以类似于选项 #2 的工作方式启动特定模块的方法(通过启动该模块专用主类,或者在该模块中启动用户指定的类):

    java --module my.module
    
  4. 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

答案 2

假设 没有包声明:Main.class

java -cp C:\Peter\Michael\Lazarus\  Main

Java在“类路径”中查找类,可以通过该选项在命令行上设置该类。-cp


推荐