如何从命令行在 Windows 上运行 .class 文件?
Posted
技术标签:
【中文标题】如何从命令行在 Windows 上运行 .class 文件?【英文标题】:How do I run .class files on windows from command line? 【发布时间】:2011-02-21 07:39:40 【问题描述】:我正在尝试从命令行运行 .class 文件。当我手动移动到它存储的目录时它可以工作,但是当我尝试这样的事情时:
java C:\Peter\Michael\Lazarus\Main
它说它找不到主类。除了制作 .jar 文件之外,还有其他解决方案吗(我知道 .jar 是最好的解决方案,但目前不是我正在寻找的解决方案)?
【问题讨论】:
【参考方案1】:Java application launcher(又名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 本身及其 Class-Path
条目中指定的任何内容放在类路径上,并启动通过 Main-Class
条目指示的类。请注意,在这种情况下,您不能指定任何其他类路径条目(它们将被静默忽略)。
Java 9 引入了模块,并引入了一种以类似于选项 #2 的工作方式启动特定模块的方法(通过启动该模块专用的主类或通过在该模块中启动用户指定的类) :
java --module my.module
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
您需要定义类路径。
【讨论】:
以上是关于如何从命令行在 Windows 上运行 .class 文件?的主要内容,如果未能解决你的问题,请参考以下文章