【问题标题】:How do I run .class files on windows from command line?如何从命令行在 Windows 上运行 .class 文件?
【发布时间】:2011-02-21 07:39:40
【问题描述】:

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

java C:\Peter\Michael\Lazarus\Main

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

【问题讨论】:

    标签: java windows terminal .class-file


    【解决方案1】:

    Java application launcher(又名java.exe 或简称为java)期望支持多达四种不同的方式来指定要启动的内容(取决于您使用的 Java 版本)。

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

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

      这里我们启动类mypackage.Main并使用-cp开关指定用于查找类的类路径(类mypackage.Main的完整路径将是path/to/classFiles/mypackage/Main.class

    2. 启动一个 jar 文件。

      java -jar myJar.jar
      

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

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

      java --module my.module
      
    4. Java 11 引入了对 Single-File Source Code Programs 的支持,这使得执行适合单个源文件的 Java 程序变得非常容易。它甚至为您执行编译步骤:

      java MyMain.java
      

      此选项对于第一次尝试 Java 很有用,但很快就会达到其限制,因为它不允许您访问在另一个源文件中定义的类(除非您单独编译它们并将它们放在类路径中,这破坏了此方法的易用性,意味着在这种情况下您可能应该切换回选项#1)。

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

    对于您的具体情况,您将使用选项 #1 并使用 -classpath 选项(或其缩写形式 -cp)告诉 java 在哪里查找该类:

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

    如果您的Main.java 包含您的全部源代码(并且位于同一目录中),那么您可以使用选项#4,跳过编译步骤并直接编译 -执行它:

    java c:\Peter\Michael\Lazarus\Main.java
    

    【讨论】:

    • 哇。 Java 只用了 11 个版本就可以以简单的方式运行一个简单的程序。现在说真的,它很好地满足了快速原型设计、测试新事物的目的,并且非常适合 Java 新手(就像我一样)
    【解决方案2】:

    假设Main.class 没有包声明:

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

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

    【讨论】:

      【解决方案3】:

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

      命令应该是java hello

      不要包含文件扩展名。它正在寻找一个类文件,并会自行添加名称。

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

      【讨论】:

        【解决方案4】:

        试试这个:

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

        您需要定义类路径。

        【讨论】:

          猜你喜欢
          • 2013-07-06
          • 2013-09-13
          • 2013-04-14
          • 2018-03-13
          • 1970-01-01
          • 2015-08-13
          相关资源
          最近更新 更多