Java 如何从命令行在windows上运行.class文件?

Java 如何从命令行在windows上运行.class文件?,java,windows,terminal,.class-file,Java,Windows,Terminal,.class File,我正在尝试从命令行运行.class文件。当我手动移动到存储它的目录时,它会起作用,但当我尝试以下操作时: java C:\Peter\Michael\Lazarus\Main 它说找不到主类。除了制作.jar文件(我知道.jar是最好的解决方案,但目前不是我正在寻找的解决方案)之外,还有其他解决方案吗?a.k.ajava.exe或干脆java)需要支持多达四种不同的方式来指定要启动的内容(取决于您使用的java版本) 指定类名是最基本的方法。请注意,类名与文件名不同 java-cp path/

我正在尝试从命令行运行.class文件。当我手动移动到存储它的目录时,它会起作用,但当我尝试以下操作时:

java C:\Peter\Michael\Lazarus\Main
它说找不到主类。除了制作.jar文件(我知道.jar是最好的解决方案,但目前不是我正在寻找的解决方案)之外,还有其他解决方案吗?

a.k.a
java.exe
或干脆
java
)需要支持多达四种不同的方式来指定要启动的内容(取决于您使用的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本身和在其
    类路径
    项上指定的任何内容放在类路径上,并启动通过
    主类
    项指示的类。请注意,在这种情况下,您不能指定任何其他类路径项(它们将被静默忽略)

  • Java 9引入了模块,并由此引入了一种启动特定模块的方法,类似于选项2的工作方式(通过启动该模块专用的主类或启动该模块内用户指定的类):

    java——模块my.module
    
  • Java 11引入了对的支持,这使得执行适合单个源文件的Java程序非常容易。它甚至为您执行编译步骤:

    java MyMain.java
    
    此选项对于首次使用Java进行实验非常有用,但很快就会达到极限,因为它不允许您访问在另一个源文件中定义的类(除非您单独编译它们并将它们放在类路径上,否则会破坏此方法的易用性,这意味着您在这种情况下可能应该切换回选项#1)

    此功能是作为开发的,有时仍被称为

  • 对于您的具体情况,您可以使用选项1,并通过使用
    -classpath
    选项(或其缩写
    -cp
    )告诉
    java
    在哪里查找该类:

    java-classpath C:\Peter\Michael\Lazarus\Main
    
    如果
    Main.java
    包含全部源代码(且位于同一目录中),则可以使用选项4,跳过编译步骤,直接编译并执行:

    javac:\Peter\Michael\Lazarus\Main.java
    
    试试这个:

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

    您需要定义类路径。

    假设
    Main.class
    没有包声明:

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

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

    我刚刚遇到同样的问题,我尝试运行
    Java hello.class
    ,这是错误的

    命令应该是java hello

    不要包含文件扩展名。它正在查找类文件,并将自己添加名称

    所以运行“
    java hello.class
    ”会告诉它去寻找“
    hello.class.class
    ”文件