Java命令列NoClassDefFoundError的解決

來源:互聯網
上載者:User

今天在研究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啟動並執行時候亦如此。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.