问题
我有一个编译的java类:
Echo.class
public class Echo {
public static void main (String arg) {
System.out.println(arg);
}
}
Icd到目录并输入: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.
在我可以从命令行运行的表单中获取我的java代码的最简单方法是什么,因为必须使用Eclipse IDE?
#1 热门回答(91 赞)
尝试:
java -cp . Echo "hello"
假设你使用以下编译:
javac Echo.java
那么"current"目录可能不在你的类路径中(java查找.class定义)
如果是这种情况并列出你的目录显示的内容:
Echo.java
Echo.class
然后任何一个可能工作:
java -cp . Echo "hello"
要么
SET CLASSPATH=%CLASSPATH;.
java Echo "hello"
然后asFredrik指出你会得到另一个错误信息。
线程"main"中的异常java.lang.NoSuchMethodError:main
当发生这种情况时,去看看他的答案:)
#2 热门回答(13 赞)
你需要指定类路径。这应该这样做:
java -cp . Echo "hello"
这告诉java使用.(当前目录)作为其类路径,即它查找类的位置。请注意,与使用包时相比,类路径必须包含根目录,而不是包子目录。例如如果你的类是my.package.Echo而.class文件是bin/my/package/Echo.class,则正确的类路径目录是bin。
#3 热门回答(13 赞)
你没有有效的main方法......签名应该是:public static void main(**String []**args);
因此,在你的情况下,代码应如下所示:
public class Echo {
public static void main (String[] arg) {
System.out.println(arg[0]);
}
}
**编辑:**请注意,Oscar也是正确的,因为你错过了。在你的类路径中,你会遇到我处理完该错误后解决的问题。