1. 程式人生 > >Linux 下執行Java程式報“Exception in thread "main" java.lang.NoClassDefFoundError”

Linux 下執行Java程式報“Exception in thread "main" java.lang.NoClassDefFoundError”

問題:使用命令“Javac Test.java” 編譯通過,並生成Test.class檔案,但是當“Java Test”時報錯???

[root@tmglh225 ~]# javac Test.java
[root@tmglh225 ~]# java Test
Exception in thread "main" java.lang.NoClassDefFoundError: Test
Caused by: java.lang.ClassNotFoundException: Test
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Test.  Program will exit.

解決辦法:

1)由於沒有配置Java 的classpath,所以我們需要配置classpath

用文字編輯器開啟/etc/profile 

在profile檔案末尾加入: 
export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

2)Linux執行.class檔案,需要從包的根目錄開始,也就是說,從工程下的src開始。(這個很重要,估計很多人會出現這個問題,我就是遇到的這個問題)

[root@tmglh225 ~]# cd Javakk
[root@tmglh225 Javakk]# cd Test
[root@tmglh225 Test]# cd src
[root@tmglh225 src]# javac Test.java
[root@tmglh225 src]# java Test
Hello World!

成功解決。。