如何从命令行执行 java .class

2022-08-31 08:31:08

我有一个编译的java类:

回声.class

public class Echo {
    public static void main (String arg) {

            System.out.println(arg);
    }
}

I 到目录并输入:cdjava Echo "hello"

我收到此错误:

C:\Documents and Settings\joe\My Documents\projects\Misc\bin>java Echo "hello"
Exception in thread "main" java.lang.NoClassDefFoundError: Echo
Caused by: java.lang.ClassNotFoundException: Echo
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Echo.  Program will exit.

以一种可以从命令行运行的形式获取Java代码的最简单方法是什么?因为必须使用Eclipse IDE?


答案 1

尝试:

java -cp . Echo "hello"

假设您编译了:

javac Echo.java 

然后有可能“当前”目录不在你的类路径中(java查找.class定义)

如果是这种情况,并列出目录的内容显示:

Echo.java
Echo.class

那么其中任何一个都可能起作用:

java -cp . Echo "hello"

SET CLASSPATH=%CLASSPATH;.  

java Echo "hello"

稍后,正如弗雷德里克指出的那样,您将收到另一条错误消息。

线程“main” java.lang.NoSuchMethodError中的异常:main

当这种情况发生时,去阅读他的答案:)


答案 2

有了Java 11,你就不必再经历这个严谨的麻烦了!

相反,您可以执行以下操作:

> java MyApp.java

您不必事先编译,因为它都可以在一个步骤中完成。

你可以在这里获得Java 11 JDK:JDK 11 GA Release


推荐