如果我没记错的话
javac filename.java
-> 编译并生成classname.class(es)java classname
没有 .class 扩展名但是当我尝试java filename.java
成功执行而java classname
命令给出以下错误时,
Error: Could not find or load main class HelloWorld
Caused by: java.lang.ClassNotFoundException: HelloWorld
Run Code Online (Sandbox Code Playgroud)
java版本
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Run Code Online (Sandbox Code Playgroud)
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" in the terminal window.
System.out.println("Hello, World");
}
}
Run Code Online (Sandbox Code Playgroud)
javap HelloWorld.class
给出以下输出
Compiled from "HelloWorld.java"
public class HelloWorld {
public HelloWorld();
public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)
java HelloWorld.java
-> 执行正常,没有生成类文件。java HelloWorld
-> 没有执行。知道为什么程序会这样吗?
在评论部分得到一些 stackoverflow 老手的帮助后,我终于明白出了什么问题。
最新版本的Java引入了直接使用Java命令启动单个文件源代码。
来自甲骨文文档。
要启动单个源文件程序:
java [选项] 源文件 [参数 ...]
要运行Helloworld.java,可以直接调用execute,java Helloworld.java
它将执行java程序并给出输出,而不.class
在当前目录中生成文件。
为什么运行 java 类文件的旧方法对我不起作用?
我的环境中有一个类路径变量“ CLASSPATH
”,因此当我执行java HelloWorld
它时,它不会在当前目录中查找类。Givejava -cp .
将当前目录显式提供给类路径。
java -cp . HelloWorld
Run Code Online (Sandbox Code Playgroud)
致谢:乔恩·斯基特、约阿希姆·绍尔、rzwitserloot
归档时间: |
|
查看次数: |
114 次 |
最近记录: |