最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Exception in thread main java.lang.NoClassDefFoundError錯(cuò)誤解決方法

 更新時(shí)間:2016年08月20日 09:40:32   投稿:mdxy-dxy  
這篇文章主要介紹了Exception in thread main java.lang.NoClassDefFoundError錯(cuò)誤解決方法,需要的朋友可以參考下

錯(cuò)誤描述
javac helloworld.java能夠通過(guò)。但是java helloworld出現(xiàn)錯(cuò)誤:

hadoop@xuwei-erplab:~/jarfile$ java HelloWorld 
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/xuwei/HelloWorld)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	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.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: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.

2、問(wèn)題解決
在文獻(xiàn)1中很多人提到都是因?yàn)榄h(huán)境變量classpath配置錯(cuò)誤。說(shuō)是沒(méi)有加上當(dāng)前路徑"."。但是我查看了自己的classpath為

復(fù)制代碼 代碼如下:

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

這表明我的classpath配置是正確的。這個(gè)時(shí)候我找到了文獻(xiàn)2,里面提到了helloword分為帶包名和不帶包名兩類(lèi)。
3、不含包層次的HelloWorld.java

public class HelloWorld {
	public static void main(String args[]){
		System.out.println("Hello World!");
	}
}

保存在/home/hadoop/jarfile下,使用javac命令編譯:

復(fù)制代碼 代碼如下:

$ javac HelloWorld.java  

運(yùn)行:
復(fù)制代碼 代碼如下:

$ java HelloWorld 

屏幕打印出:
  Hello World!

4、初學(xué)者常犯的錯(cuò)誤
4.1. 運(yùn)行時(shí),帶了.class后綴
        如果你試圖使用如下命令:(下面的命令都是假設(shè)在HelloWorld.java所在目錄執(zhí)行,即/home/hadoop/jarfile)

復(fù)制代碼 代碼如下:

java HelloWorld.class 

系統(tǒng)會(huì)誤認(rèn)為你運(yùn)行的是HelloWorld包下的名為class的類(lèi)文件,會(huì)到系統(tǒng)的CLASSPATH下(一般都包括當(dāng)前目錄)企圖尋找 HelloWorld.class.class這樣的類(lèi),這樣的類(lèi)當(dāng)然不存在了;并且也不可能存在,因?yàn)閏lass是關(guān)鍵字,不能作為一個(gè)類(lèi)的名字。所以會(huì)報(bào)如下錯(cuò)誤信息:
  Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class
4.2. 文件名大小寫(xiě)錯(cuò)誤
  對(duì)于像Windows這樣的系統(tǒng),編譯時(shí)可以不關(guān)心大小寫(xiě)(linux區(qū)分大小寫(xiě))。比如編譯HelloWorld.java時(shí),也可以使用:

復(fù)制代碼 代碼如下:

javac helloworld.java

也可以編譯通過(guò),但產(chǎn)生的類(lèi)文件仍然是和源文件相符的:HelloWorld.class。但在運(yùn)行時(shí)一定要注意大小寫(xiě),比如試圖使用如下命令運(yùn)行:

復(fù)制代碼 代碼如下:

java helloworld 

將報(bào)類(lèi)似于1中的錯(cuò)誤:
  Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)
5、包含包層次的HelloWorld.java
  比如上面的HelloWorld.java修改如下:

package org.myorg;

public class HelloWorld {
	public static void main(String args[]){
		System.out.println("Hello World!");
	}
}

編譯時(shí)有兩種方法
5.1. 直接編譯

復(fù)制代碼 代碼如下:

javac HelloWorld.java 

  此時(shí)在當(dāng)前目錄下輸出HelloWorld.class。此時(shí),運(yùn)行不能使用上面相同的方法,使用:

復(fù)制代碼 代碼如下:

java HelloWorld 

  運(yùn)行時(shí),出現(xiàn)如下錯(cuò)誤:
  Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/myorg/HelloWorld)
  從上述錯(cuò)誤信息你也可以看到,系統(tǒng)可以找到HelloWorld類(lèi)(因?yàn)楫?dāng)前路徑包含在CLASSPATH中,具體為什么會(huì)提示wrong name,有興趣的朋友參見(jiàn)Java語(yǔ)言規(guī)范),但這個(gè)類(lèi)屬于org.myogr包。所以,你要做的就是按照上述包層次,相應(yīng)的創(chuàng)建目錄層次,把上面生成的HelloWorld.class放到/home/hadoop/jarfile/org/myorg目錄下。HelloWorld.java在/home/hadoop/jarfile/目錄下。運(yùn)行: 

復(fù)制代碼 代碼如下:

java org.myorg.HelloWorld 

系統(tǒng)打印出:
 Hello World! 

這兒要注意的是,不能使用java org\myorg\HelloWorld來(lái)運(yùn)行,此時(shí)同樣會(huì)出現(xiàn)如下錯(cuò)誤:
Exception in thread "main" java.lang.NoClassDefFoundError :org\myorg\HelloWorld (wrong name: org\myorg\HelloWorld)
  是不是有點(diǎn)怪怪的,那沒(méi)辦法。以后對(duì)Java的包有更深的認(rèn)識(shí)時(shí),就會(huì)明白了。
5.2. 使用 -d <directory>編譯選項(xiàng)
  是不是覺(jué)得上面的編譯方法有點(diǎn)麻煩,能不能自動(dòng)在當(dāng)前路徑(或任意指定的路徑)下生成包層次呢?有!使用-d <directory>編譯選項(xiàng)就能做到。

復(fù)制代碼 代碼如下:

javac -d . HelloWorld.java 

  此時(shí),在當(dāng)前目錄(/home/hadoop/jarfile)下就生成了一個(gè)org\myorg目錄(/home/hadoop/jarfile/org/myorg),并且輸出的.class文件也在里面。運(yùn)行:

復(fù)制代碼 代碼如下:

java org.myorg.HelloWorld 

系統(tǒng)打?。?/p>

Hello World!

  如果你想把生成的類(lèi)文件集中存放在一個(gè)目錄中,比如:/home/hadoop/jarfile/test下,那么你首先創(chuàng)建這個(gè)目錄,然后編譯時(shí):

復(fù)制代碼 代碼如下:

javac -d /home/hadoop/jarfile/test HelloWorld.java 

  就可以把生成的類(lèi)文件放到/home/hadoop/jarfile/test目錄下,并且按照包層次相應(yīng)的創(chuàng)建目錄路徑。你可以在/home/hadoop/jarfile/test/org/myorg下找到HelloWorld.class文件。此時(shí)使用如下命令可以正確運(yùn)行(注意如果要用到其它類(lèi),請(qǐng)?jiān)贑LASSPATH中設(shè)好):

復(fù)制代碼 代碼如下:

hadoop@xuwei-erplab:~/jarfile/test$ java org.xuwei2.HelloWorld 

注意上述命令是在/home/hadoop/jarfile/test下執(zhí)行的。

如果不行可以參考下面的方法:

第二個(gè)問(wèn)題解決方法:

這是因?yàn)镴DK的版本而產(chǎn)生的問(wèn)題,我裝的是OpenJDK,會(huì)出現(xiàn)JAR包的缺失,導(dǎo)致啟動(dòng)報(bào)錯(cuò),所以這里需要更換為Oracle官方給出的JDK

1、去Oracle官方下載一個(gè)這樣的包:jdk-7u79-linux-x64.tar.gz
2、解壓之后,移動(dòng)到/usr/local/java目錄下
3、添加環(huán)境變量:vim   /etc/profile,文件最后添加下面幾行

復(fù)制代碼 代碼如下:

export JAVA_HOME=/usr/local/java/jdk1.7.0_79   //實(shí)際的JDK路徑
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

4、完成上述安裝之后,再啟動(dòng)Tomcat,發(fā)現(xiàn)還會(huì)報(bào)錯(cuò):Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

這個(gè)問(wèn)題是因?yàn)門(mén)omcat沒(méi)有識(shí)別出JDK的環(huán)境變量

5、修改Tomcat中bin目錄的catalina.sh文件,在文件的開(kāi)頭,加入下面代碼:

復(fù)制代碼 代碼如下:

export JAVA_HOME=/usr/local/java/jdk1.7.0_79  ////實(shí)際的JDK路徑
export JRE_HOME=/usr/local/java/jdk1.7.0_79/jre

最后啟動(dòng)Tomcat,日志打印正常,瀏覽器也能夠訪問(wèn),問(wèn)題解決

Exception in thread "main" java.lang.InternalError
        at sun.security.ec.SunEC.initialize(Native Method)
        at sun.security.ec.SunEC.access$000(SunEC.java:49)
        at sun.security.ec.SunEC$1.run(SunEC.java:61)

相關(guān)文章

  • Java之如何關(guān)閉流

    Java之如何關(guān)閉流

    這篇文章主要介紹了Java之如何關(guān)閉流問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 關(guān)于Spring BeanPostProcessor的執(zhí)行順序

    關(guān)于Spring BeanPostProcessor的執(zhí)行順序

    這篇文章主要介紹了Spring BeanPostProcessor的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Springboot項(xiàng)目打包如何將依賴(lài)的jar包輸出到指定目錄

    Springboot項(xiàng)目打包如何將依賴(lài)的jar包輸出到指定目錄

    公司要對(duì)springboot項(xiàng)目依賴(lài)的jar包進(jìn)行升級(jí),但是遇到一個(gè)問(wèn)題,項(xiàng)目打包之后,沒(méi)辦法看到他里面依賴(lài)的jar包,版本到底是不是升上去了,沒(méi)辦法看到,下面通過(guò)本文給大家分享Springboot項(xiàng)目打包如何將依賴(lài)的jar包輸出到指定目錄,感興趣的朋友一起看看吧
    2024-05-05
  • 詳解Java編程中Annotation注解對(duì)象的使用方法

    詳解Java編程中Annotation注解對(duì)象的使用方法

    這篇文章主要介紹了Java編程中Annotation注解對(duì)象的使用方法,注解以"@注解名"的方式被編寫(xiě),與類(lèi)、接口、枚舉是在同一個(gè)層次,需要的朋友可以參考下
    2016-03-03
  • Spring Boot使用Value注解給靜態(tài)變量賦值的方法

    Spring Boot使用Value注解給靜態(tài)變量賦值的方法

    這篇文章主要介紹了Spring Boot使用Value注解給靜態(tài)變量賦值的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • JVM內(nèi)存模型/內(nèi)存空間:運(yùn)行時(shí)數(shù)據(jù)區(qū)

    JVM內(nèi)存模型/內(nèi)存空間:運(yùn)行時(shí)數(shù)據(jù)區(qū)

    這篇文章主要介紹了JVM內(nèi)存模型/內(nèi)存空間的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java虛擬機(jī),感興趣的朋友可以了解詳細(xì),希望能夠給你帶來(lái)幫助
    2021-08-08
  • 淺談Java中OutOfMemoryError問(wèn)題產(chǎn)生原因

    淺談Java中OutOfMemoryError問(wèn)題產(chǎn)生原因

    本文主要介紹了淺談Java中OutOfMemoryError問(wèn)題產(chǎn)生原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java多線程的具體介紹與使用筆記小結(jié)

    Java多線程的具體介紹與使用筆記小結(jié)

    Java多線程詳細(xì)介紹線程是程序執(zhí)行的最小單元,多線程是指程序同一時(shí)間可以有多個(gè)執(zhí)行單元運(yùn)行(這個(gè)與你的CPU核心有關(guān))。 接下來(lái)通過(guò)本文給大家介紹Java多線程的具體介紹與使用筆記小結(jié),感興趣的朋友一起看看吧
    2021-05-05
  • Springboot整合itext實(shí)現(xiàn)PDF文件合并

    Springboot整合itext實(shí)現(xiàn)PDF文件合并

    這篇文章主要為大家詳細(xì)介紹了Springboot整合itext實(shí)現(xiàn)PDF文件合并以及識(shí)別圖片轉(zhuǎn)成PDF拼接的相關(guān)知識(shí),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Java設(shè)計(jì)模式之觀察者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java設(shè)計(jì)模式之觀察者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章給大家介紹流量java設(shè)計(jì)模式之觀察者模式,定義對(duì)象間一種一對(duì)多的依賴(lài)關(guān)系,使得當(dāng)每一個(gè)對(duì)象改變狀態(tài)。下面通過(guò)類(lèi)圖和實(shí)例代碼給大家介紹java設(shè)計(jì)模式之觀察者模式,感興趣的朋友一起看看吧
    2017-08-08

最新評(píng)論

延长县| 固镇县| 灵台县| 钦州市| 隆林| 叙永县| 辽阳县| 涿鹿县| 峨边| 涡阳县| 岐山县| 闽清县| 安多县| 黄石市| 繁昌县| 盐边县| 乌恰县| 宁德市| 东明县| 确山县| 东乡县| 容城县| 凉城县| 大连市| 武邑县| 石泉县| 那曲县| 聂拉木县| 铜山县| 保德县| 平果县| 天台县| 洛浦县| 沂水县| 丁青县| 临城县| 开封市| 新巴尔虎左旗| 清镇市| 乌什县| 大姚县|