我有一个编译的java类:
Echo.class
public class Echo {
public static void main (String arg) {
System.out.println(arg);
}
}
Run Code Online (Sandbox Code Playgroud)
我cd到目录并输入:java 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.
Run Code Online (Sandbox Code Playgroud)
在我可以从命令行运行的表单中获取我的java代码的最简单方法是什么,因为必须使用Eclipse IDE?
Osc*_*Ryz 117
尝试:
java -cp . Echo "hello"
Run Code Online (Sandbox Code Playgroud)
假设您使用以下编译:
javac Echo.java
Run Code Online (Sandbox Code Playgroud)
那么"current"目录可能不在你的类路径中(java查找.class定义)
如果是这种情况并列出您的目录显示的内容:
Echo.java
Echo.class
Run Code Online (Sandbox Code Playgroud)
然后任何一个可能工作:
java -cp . Echo "hello"
Run Code Online (Sandbox Code Playgroud)
要么
SET CLASSPATH=%CLASSPATH;.
java Echo "hello"
Run Code Online (Sandbox Code Playgroud)
后来Fredrik指出你会收到另一条错误消息.
线程"main"中的异常java.lang.NoSuchMethodError:main
当发生这种情况时,去看看他的答案:)
Mic*_*rdt 16
您需要指定类路径.这应该这样做:
java -cp . Echo "hello"
Run Code Online (Sandbox Code Playgroud)
这告诉java使用.(当前目录)作为其类路径,即它查找类的位置.注意,与使用包时相比,类路径必须包含根目录,而不是包子目录.例如,如果您的类是my.package.Echo.class文件bin/my/package/Echo.class,那么正确的类路径目录是bin.
Fre*_*rik 15
你没有有效的main方法......签名应该是:public static void main(String [] args);
因此,在您的情况下,代码应如下所示:
public class Echo {
public static void main (String[] arg) {
System.out.println(arg[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:请注意奥斯卡也是对的,因为你错过了.在你的类路径中,你会遇到我处理完错误后解决的问题.
小智 7
如果你的java源代码中有
package mypackage;
Run Code Online (Sandbox Code Playgroud)
你的课程是 hello.java
public class hello {
Run Code Online (Sandbox Code Playgroud)
在那个 hello.java 中你有
public static void main(String[] args) {
Run Code Online (Sandbox Code Playgroud)
然后(编译后)changeDir (cd) 到 hello.class 所在的目录。然后
java -cp . mypackage.hello
Run Code Online (Sandbox Code Playgroud)
请注意当前目录和类名之前的包名。它适用于我的 Linux Mint,我希望也适用于其他操作系统
感谢 Stack Overflow 提供的丰富信息。
使用Java 11,您将不必再经历这个繁琐的工作了!
相反,您可以这样做:
> java MyApp.java
Run Code Online (Sandbox Code Playgroud)
您无需事先进行编译,因为这一切都一步一步完成。
您可以在此处获取Java 11 JDK:JDK 11 GA版本
| 归档时间: |
|
| 查看次数: |
310050 次 |
| 最近记录: |