今天在研究ant的時候,使用ant運行Java總是報錯
Exception in thread "main" java.lang.NoClassDefFoundError: HelloworldCaused by: java.lang.ClassNotFoundException: Helloworld 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: Helloworld. Program will exit.
path和classpath如下配置:
path配置:%JAVA_HOME%\binclasspath配置:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
並且在dos下,java,javac命令一切顯示正常。
使用java -version,javac -version 顯示的版本都一致,但還是報錯誤。
後來在網上看到一篇文章,根據提示修改了classpath配置,更改後如下:
.;%JAVA_HOME%\lib\dt.jar.;%JAVA_HOME%\lib\tools.jar
使用java命令,錯誤消失。
原來,“.”表示當前路徑,是預設值。一旦設定環境變數classpath路徑,就覆蓋了原來的預設值。而如果使用java -classpath,則覆蓋環境變數設定的classpath值。
因此在設定環境變數classpath時,不要忘記添加.,把預設值添加,預設會被覆蓋的。
另外還要記住一點,在使用java命令運行java類的時候,如果有包名一定要在類前面加上包名。即使使用ant啟動並執行時候亦如此。