ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home
我有錯(cuò)誤
Exception in thread"main" java.lang.NoClassDefFoundError:
當(dāng)我嘗試在Ubuntu上運(yùn)行編譯類時(shí)。我使用的是一個(gè)非常簡(jiǎn)單的helloworld示例,互聯(lián)網(wǎng)上已有數(shù)百萬(wàn)的響應(yīng)表明我的classpath和java_home變量設(shè)置錯(cuò)誤。
但是,我已經(jīng)將etc/environment編輯為正確的文件夾以及當(dāng)前文件夾:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun/"
CLASSPATH=".:/usr/lib/jvm/java-1.5.0-sun/lib"
當(dāng)我輸入set命令時(shí),它們就會(huì)出現(xiàn)。在任何情況下,即使我手動(dòng)使用
sudo java -cp . myfirstjavaprog.class
我也有同樣的錯(cuò)誤。我還應(yīng)該看看哪里?這一定是配置問題。
多謝
cyberciti.biz/faq/set-environment-variable-linux
你想把.class從頭到尾丟掉。只要鍵入…
java -cp . myfirstjavaprog
我很沮喪,沒有發(fā)現(xiàn)這一點(diǎn)。
我們中最優(yōu)秀的人也會(huì)遇到。
我強(qiáng)烈建議去掉classpath環(huán)境變量,或者至少去掉JRE/JDK。
除非另有規(guī)定,否則"."隱含在類路徑中。自從Java 1.3以來(lái),Java已經(jīng)足夠聰明,可以根據(jù)JavaC/Java可執(zhí)行文件的執(zhí)行路徑找到自己的運(yùn)行庫(kù)和庫(kù)。從那時(shí)起,在類路徑上指定那些內(nèi)容是多余的,如果不是完全錯(cuò)誤的話。當(dāng)然,.../lib是不正確的,因?yàn)槟抢镏挥衘ar,沒有類,如果沒有單獨(dú)和明確地命名,就不會(huì)從類路徑中提取它們。
現(xiàn)代javas足夠聰明,當(dāng)您站在類路徑的根目錄中時(shí),只需鍵入java,它就可以工作™。
你說得對(duì),問題是當(dāng)我嘗試編譯任何導(dǎo)入Swing組件的東西時(shí),它給出了完全相同的錯(cuò)誤。盡管helloworld.java示例很好…這似乎很奇怪。
哦。。。注意Windows默認(rèn)情況下是用一個(gè)嚴(yán)重癱瘓的Java來(lái)運(yùn)行的,可執(zhí)行文件位于Windows系統(tǒng)類路徑中。請(qǐng)?jiān)贒OS提示符下做"Java版本",看看你正在運(yùn)行的Java版本是否是你想要的版本!
同樣的事情可以說是Ubuntu;因?yàn)樗cGNU Java(至少是我見過的Ubuntu系統(tǒng)的兩個(gè)系統(tǒng))一起運(yùn)行,而不是Sun的Java。K,它不是"嚴(yán)重殘疾"-但它不是太陽(yáng)的爪哇。
我在B/C上投票,關(guān)于"在谷歌上設(shè)置Java類路徑"的東西不多。我錯(cuò)認(rèn)為你還需要設(shè)置類路徑…但我錯(cuò)了。
那爪哇之家呢…是否仍需要設(shè)置該路徑變量?
@特雷弗:有一些工具很喜歡看它,我好像還記得有湯姆貓和螞蟻在其中。但即使是那些沒有的人,在"正常"的情況下,你也不需要它。
使用
sudo update-java-alternatives -s java-6-openjdk
它設(shè)置了很多類路徑的東西。
你在把蘋果和桔子混在一起。命令行上的原始Java或JavaC調(diào)用需要一個(gè)類路徑來(lái)知道它可以訪問它的類。當(dāng)你奔跑
java -cp pathelement1:pathelement2... MyClass
您給Java提供查找可運(yùn)行類的位置列表。它不會(huì)在其他地方看到,包括".",除非你告訴它。所以"classpath"對(duì)你沒有幫助,除非你跑
java -cp $CLASSPATH MyClass
換句話說,它只是一個(gè)快捷方式,可以繼續(xù)重新輸入類路徑。
許多程序被配置為使用JavaJHOST,但最終運(yùn)行Java程序只需要配置的類路徑和Java路徑(它們通過JavaJHOLD變量找到,所以您仍然需要它來(lái)處理像Ant之類的東西,但它的概念仍然只是一個(gè)快捷方式)。
您的路徑是系統(tǒng)查找二進(jìn)制文件的路徑。如果Java不在您的路徑上(類型"Java"),它將顯示您的路徑(如果有的話,Java)。運(yùn)行/完全/路徑/to/Java與運(yùn)行"Java"相同,并使系統(tǒng)在路徑變量中找到二進(jìn)制。
不,我認(rèn)為是類路徑環(huán)境變量被忽略了。
正確的方法是在編譯和運(yùn)行時(shí)使用-classpath選項(xiàng)。為每個(gè)項(xiàng)目設(shè)置。你眼前的證據(jù)告訴你是這樣的。
為什么類路徑被忽略?幾個(gè)原因:
這是一個(gè)Java 1偽品,已經(jīng)失寵了。
JVM不能保證您已經(jīng)將其設(shè)置為環(huán)境變量。
IDE有自己的需求,所以它們不依賴于它。
JavaEE應(yīng)用服務(wù)器有他們自己的要求,所以他們不依賴它。
每次都必須給出整個(gè)路徑,因?yàn)槊總€(gè)項(xiàng)目都可能不同。一旦你通過了"你好,世界",你會(huì)發(fā)現(xiàn)你自己正在為它編寫腳本,或者使用Ant和Maven這樣的工具來(lái)幫助你為你的項(xiàng)目設(shè)置類路徑。
這是個(gè)壞主意。因?yàn)槊看嗡家σ愿?/p>
為什么類路徑環(huán)境變量被忽略?
@拉克沙曼-錯(cuò)。他必須學(xué)習(xí)如何以一種適合未來(lái)項(xiàng)目的方式來(lái)完成它,這種方式不太可能在命令行上編譯和運(yùn)行。
這個(gè)答案像金子。然而,DOS的人是被擰死的。255個(gè)字符的命令行。再次感謝,比爾!
關(guān)鍵是,一旦通過"hello,world"和教程,就沒有人使用命令shell來(lái)編譯或運(yùn)行任何有意義的東西。這幾乎不是你想要解決的問題。桌面應(yīng)用程序使用腳本和Ant;部署的應(yīng)用程序使用內(nèi)置的約定。如果它這么大,Java早在幾年前就已經(jīng)絕跡了。
好吧,我找錯(cuò)地方了。原來(lái)Java是好的,我是兩個(gè)單獨(dú)的問題得到相同錯(cuò)誤的受害者。
我最初試圖從Java網(wǎng)站上運(yùn)行一個(gè)Swing實(shí)例,但我沒有注意到它有一個(gè)包定義。我已經(jīng)設(shè)置了正確的文件夾結(jié)構(gòu),現(xiàn)在運(yùn)行正常。
當(dāng)我嘗試運(yùn)行HelloWorld示例時(shí),不小心包含了.class擴(kuò)展名。
這兩個(gè)問題都給了我classNotFound錯(cuò)誤。
非常感謝你的幫助。
我強(qiáng)烈建議你花些時(shí)間看太陽(yáng)教程。它將幫助你以后-階級(jí)道路是臭名昭著的麻煩制造者。
http://java.sun.com/docs/books/tutorial/getstarted/toc.html網(wǎng)站
對(duì)于設(shè)置java_home變量,以下是說明。
http://luckydev07.blogspot.com/2009/08/setting-javahome-in-ubuntu-linux.html
和
類路徑可以類似地設(shè)置
已經(jīng)設(shè)置了這些變量,但出于某種原因它們被忽略了。我一定有語(yǔ)法問題。
鏈接不再工作..考慮更新..
總結(jié)
以上是生活随笔為你收集整理的ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python协程--迭代器
- 下一篇: rhadoop连接mysql数据库_rh