情况说明
Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorld
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader
1.
r
u
n
(
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
197
)
a
t
j
a
v
a
.
s
e
c
u
r
i
t
y
.
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
d
o
P
r
i
v
i
l
e
g
e
d
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
j
a
v
a
.
n
e
t
.
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
f
i
n
d
C
l
a
s
s
(
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
190
)
a
t
j
a
v
a
.
l
a
n
g
.
C
l
a
s
s
L
o
a
d
e
r
.
l
o
a
d
C
l
a
s
s
(
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
307
)
a
t
s
u
n
.
m
i
s
c
.
L
a
u
n
c
h
e
r
1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher
1.run(URLClassLoader.java:197)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:190)atjava.lang.ClassLoader.loadClass(ClassLoader.java:307)atsun.misc.LauncherAppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: HelloWorld. Program will exit.
以上是我在DOS命令中运行字节码文件(.class)出现的错误,我使用的MyEclipse写的第一个程序HelloWorld,运行不出来也是很崩溃。
解决方法
查询了多方面的原因,解决方法综合如下:
(1)JDK配置中CLASSPATH的配置出现错误
解决方法: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在配置JDK后一定要在DOS窗口中检验一下!!!(具体配置可以搜到很多)
java -version
javac
(2)检查HelloWorld.java文件中的代码书写,区分大小写,初次写可能会出现大小写错误。
(3)使用指令javac xxxx.java文件后会生成字节码文件,确保生成的字节码文件(.class后缀的文件)存在并且和.java文件在一个目录下。
以上我都确定没有错误,但是还是出现了错误,原因:在代码中含有package
解决方法:
(1)去掉包名运行
(2)运行时加上包名
具体:javac -d . HelloWorld.java
运行后会出现一个为包名的文件夹,文件夹有HelloWorld.class文件
在.java所在的目录下打开DOS窗口,javac 运行之后加上包名.类名
例如:javac step.HelloWorld(step为包名)