Har*_*tha 47 java noclassdeffounderror
以下程序抛出错误:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\
Path C:\Program Files\Java\jdk1.6.0_18\bin\
JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin
Run Code Online (Sandbox Code Playgroud)
你能告诉我根本原因吗?
小智 66
我找到了另一个常见的原因.如果使用像eclipse这样的IDE在包内创建java文件,您将在java文件的顶部找到包名称,如"package pkgName".如果您尝试从命令提示符运行此文件,您将收到NoClassDefFoundError错误.从java文件中删除包名称,然后使用命令提示符中的命令.为此浪费了3个小时. - 阿比
在我的情况下,包名称是用小写字母写的,虽然包名是大写的.阿比,非常感谢.
sgo*_*les 27
Exception in thread "main" java.lang.NoClassDefFoundError
Run Code Online (Sandbox Code Playgroud)
java尝试查找.class文件的地方之一是您当前的目录.因此,如果您的.class文件存在C:\java,则应将当前目录更改为该目录.
要更改目录,请在提示符处键入以下命令,然后按Enter键:
cd c:\java
Run Code Online (Sandbox Code Playgroud)
这. 告诉java你的类路径是你的本地目录.
Executing your program using this command should correct the problem:
java -classpath . HelloWorld
Run Code Online (Sandbox Code Playgroud)
小智 14
如果你的包是helloworld你要去你的包的父目录,那么运行:
java helloworld.HelloWorld
Run Code Online (Sandbox Code Playgroud)
这是可以从Windows命令提示符运行的Java命令的长格式:
"C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.java
"C:\Program Files\Java\jdk1.6.0_18\bin\java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld
Run Code Online (Sandbox Code Playgroud)
注意,类路径的末尾没有斜杠。javac.exe命令期望文件以“ .java”结尾。java.exe命令需要完整的类名,并且不能以“ .class”结尾。
有几种方法可以简化这些命令:
您不必输入整个类路径(即,您可以只使用-classpath“。”)。输入您将要使用的目录:
cd“ C:\ Users \ Scott \ workspace \ myproject \”
您可以使用默认软件包(将HelloWorld.java文件目录放在工作目录中,而不使用Java软件包指令)
如果进行了这些更改,则将运行以下内容(并且您可以省去-classpath“。”):
cd "C:\Users\Scott\workspace\myproject\"
javac -classpath "." HelloWorld.java
java -classpath "." HelloWorld
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279310 次 |
| 最近记录: |