常見(jiàn)問(wèn)題(及其解決方案) 編譯器的問(wèn)題
Microsoft Windows系統(tǒng)上常見(jiàn)的錯(cuò)誤消息。
"javac" is not recognized as an internal or external command, operable program or batch file
如果你收到這個(gè)錯(cuò)誤,Windows將無(wú)法找到編譯器(javac)。
這里有一種方法可以告訴Windows哪里可以找到j(luò)avac,假設(shè)你在C:jdk1.8.0中安裝了JDK,在提示符處輸入以下命令并按Enter鍵:
C:jdk1.8.0injavac HelloWorldApp.java
如果你選擇此選項(xiàng),你必須在你的javac和java命令之前使用C:jdk1.8.0in,每次編譯或運(yùn)行一個(gè)程序時(shí),為了避免這種額外的輸入,請(qǐng)參考JDK 8安裝說(shuō)明中更新PATH變量的部分。
Class names, "HelloWorldApp", are only accepted if annotation processing is explicitly requested
如果收到此錯(cuò)誤,則在編譯程序時(shí)忘記包含.java后綴,記住,這個(gè)命令是javac HelloWorldApp.java,不是javac HelloWorldApp。
UNIX系統(tǒng)上常見(jiàn)的錯(cuò)誤消息javac: Command not found
如果你收到這個(gè)錯(cuò)誤,UNIX將無(wú)法找到編譯器javac。
有一種方法可以告訴UNIX在哪里找到javac,假設(shè)你在/usr/local/jdk1.8.0中安裝了JDK,在提示符下輸入以下命令并按回車(chē):
/usr/local/jdk1.8.0/javac HelloWorldApp.java
如果你選擇此選項(xiàng),那么每次編譯或運(yùn)行一個(gè)程序時(shí),你都必須在你的javac和java命令之前加上/usr/local/jdk1.8.0/,為了避免這種額外的輸入,你可以將這些信息添加到PATH變量中,這樣做的步驟將根據(jù)當(dāng)前運(yùn)行的shell而有所不同。
Class names, "HelloWorldApp", are only accepted if annotation processing is explicitly requested
如果收到此錯(cuò)誤,則在編譯程序時(shí)忘記包含.java后綴,記住,這個(gè)命令是javac HelloWorldApp.java,不是javac HelloWorldApp。
語(yǔ)法錯(cuò)誤(所有平臺(tái))如果你錯(cuò)誤地編寫(xiě)程序的一部分,編譯器可能會(huì)發(fā)出語(yǔ)法錯(cuò)誤,消息通常顯示錯(cuò)誤的類(lèi)型、檢測(cè)錯(cuò)誤的行號(hào)、行上的代碼以及代碼中錯(cuò)誤的位置,在語(yǔ)句末尾省略分號(hào)(;)會(huì)導(dǎo)致以下錯(cuò)誤:
testing.java:14: `;" expected. System.out.println("Input has " + count + " chars.") ^ 1 error
有時(shí),編譯器無(wú)法猜測(cè)你的意圖,如果錯(cuò)誤級(jí)聯(lián)超過(guò)幾行,則會(huì)打印出混亂的錯(cuò)誤消息或多個(gè)錯(cuò)誤消息,例如,下面的代碼片段省略了粗體行中的分號(hào)(;):
while (System.in.read() != -1) count++ System.out.println("Input has " + count + " chars.");
在處理此代碼時(shí),編譯器發(fā)出兩個(gè)錯(cuò)誤消息:
testing.java:13: Invalid type expression. count++ ^ testing.java:14: Invalid declaration. System.out.println("Input has " + count + " chars."); ^ 2 errors
編譯器發(fā)出兩個(gè)錯(cuò)誤消息,因?yàn)樵谒幚?b>count++之后,編譯器的狀態(tài)表明它位于表達(dá)式的中間,如果沒(méi)有分號(hào),編譯器就無(wú)法知道語(yǔ)句是否完整。
如果你看到任何編譯錯(cuò)誤,那么你的程序沒(méi)有成功編譯,編譯器也沒(méi)有創(chuàng)建.class文件,仔細(xì)檢查程序,修復(fù)你檢測(cè)到的任何錯(cuò)誤,然后再次嘗試。
語(yǔ)義錯(cuò)誤除了驗(yàn)證你的程序語(yǔ)法正確之外,編譯器還檢查其他基本正確性,例如,每次使用未初始化的變量時(shí),編譯器都會(huì)警告你:
testing.java:13: Variable count may not have been initialized. count++ ^ testing.java:14: Variable count may not have been initialized. System.out.println("Input has " + count + " chars."); ^ 2 errors
同樣,你的程序沒(méi)有成功編譯,編譯器也沒(méi)有創(chuàng)建.class文件,修復(fù)錯(cuò)誤并再次嘗試。
運(yùn)行時(shí)的問(wèn)題Microsoft Windows系統(tǒng)上的錯(cuò)誤消息。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
如果你收到此錯(cuò)誤,java將無(wú)法找到你的字節(jié)碼文件HelloWorldApp.class。
java試圖找到.class文件的地方之一是當(dāng)前目錄,因此,如果你的.class文件在C:java中,你應(yīng)該將當(dāng)前目錄更改為C:java,若要更改目錄,請(qǐng)?jiān)谔崾痉庉斎胍韵旅睿缓蟀椿剀?chē)鍵:
cd c:java
他的提示應(yīng)該更改為C:java>,如果在提示符處輸入dir,應(yīng)該會(huì)看到.java和.class文件,現(xiàn)在再次輸入java HelloWorldApp。
如果仍然有問(wèn)題,你可能需要更改CLASSPATH變量,要查看是否需要這樣做,請(qǐng)嘗試使用以下命令對(duì)類(lèi)路徑進(jìn)行截?cái)唷?/p>
set CLASSPATH=
現(xiàn)在再次輸入java HelloWorldApp,如果該程序現(xiàn)在可以工作,那么你必須更改CLASSPATH變量,要設(shè)置此變量,請(qǐng)參閱JDK 8安裝說(shuō)明中更新路徑變量一節(jié),CLASSPATH變量的設(shè)置方式相同。
Could not find or load main class HelloWorldApp.class
初學(xué)者程序員常犯的一個(gè)錯(cuò)誤是嘗試在編譯器創(chuàng)建的.class文件上運(yùn)行java啟動(dòng)程序,例如,如果你試圖使用HelloWorldApp.class而不是java HelloWorldApp運(yùn)行程序,你將會(huì)得到這個(gè)錯(cuò)誤。記住,參數(shù)是要使用的類(lèi)的名稱(chēng),而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的類(lèi)有一個(gè)main方法來(lái)開(kāi)始執(zhí)行應(yīng)用程序,詳解“Hello World!”應(yīng)用中詳細(xì)討論了main方法。
UNIX系統(tǒng)上的錯(cuò)誤消息Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
如果你收到此錯(cuò)誤,java將無(wú)法找到你的字節(jié)碼文件HelloWorldApp.class。
java試圖找到你的字節(jié)碼文件的地方之一是當(dāng)前目錄,例如,如果你的字節(jié)碼文件位于/home/jdoe/java中,你應(yīng)該將當(dāng)前目錄更改為該目錄,若要更改目錄,請(qǐng)?jiān)谔崾痉庉斎胍韵旅畈椿剀?chē):
cd /home/jdoe/java
如果在提示符處輸入pwd,應(yīng)該會(huì)看到/home/jdoe/java,如果在提示符處輸入ls,應(yīng)該會(huì)看到.java和.class文件,現(xiàn)在再次輸入java HelloWorldApp。
如果你仍然有問(wèn)題,你可能需要更改CLASSPATH環(huán)境變量,要查看是否需要這樣做,請(qǐng)嘗試使用以下命令對(duì)類(lèi)路徑進(jìn)行截?cái)唷?/p>
unset CLASSPATH
現(xiàn)在再次輸入java HelloWorldApp,如果該程序現(xiàn)在可以工作,那么你將必須以與上面的PATH變量相同的方式更改CLASSPATH變量。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
初學(xué)者程序員常犯的一個(gè)錯(cuò)誤是嘗試在編譯器創(chuàng)建的.class文件上運(yùn)行java啟動(dòng)程序,例如,如果你試圖使用HelloWorldApp.class而不是java HelloWorldApp運(yùn)行程序,你將會(huì)得到這個(gè)錯(cuò)誤。記住,參數(shù)是要使用的類(lèi)的名稱(chēng),而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的類(lèi)有一個(gè)主要的方法來(lái)開(kāi)始執(zhí)行應(yīng)用程序,詳解“Hello World!”應(yīng)用中詳細(xì)討論了main方法。
Applet或Java Web Start應(yīng)用程序被阻塞如果你正在通過(guò)瀏覽器運(yùn)行一個(gè)應(yīng)用程序,并得到安全警告說(shuō)該應(yīng)用程序被阻塞,請(qǐng)檢查以下條目:
驗(yàn)證JAR文件清單中的屬性是否為應(yīng)用程序正在運(yùn)行的環(huán)境正確設(shè)置,需要使用Permissions屬性,在NetBeans項(xiàng)目中,你可以通過(guò)擴(kuò)展項(xiàng)目文件夾和雙擊manifest.mf,從NetBeans IDE的Files選項(xiàng)卡中打開(kāi)清單文件。
驗(yàn)證應(yīng)用程序是由一個(gè)有效的證書(shū)簽名的,并且該證書(shū)位于簽名者CA keystore中。
如果你正在運(yùn)行一個(gè)本地applet,請(qǐng)?jiān)O(shè)置一個(gè)用于測(cè)試的web服務(wù)器,你還可以將應(yīng)用程序添加到異常站點(diǎn)列表中,該列表在Java控制面板的Security選項(xiàng)卡中進(jìn)行管理。
上一篇:仔細(xì)看看“Hello World!”應(yīng)用程序 下一篇:面向?qū)ο缶幊谈拍?/b>文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/76425.html
Hello World!應(yīng)用程序 下面列出的小節(jié)提供了編譯和運(yùn)行一個(gè)簡(jiǎn)單的Hello World!應(yīng)用程序的詳細(xì)說(shuō)明,第一部分提供了關(guān)于使用NetBeans IDE入門(mén)的信息,集成開(kāi)發(fā)環(huán)境極大地簡(jiǎn)化了軟件開(kāi)發(fā)過(guò)程。NetBeans IDE運(yùn)行在下面列出的所有平臺(tái)上,其余部分提供了特定于平臺(tái)的指示,用于在沒(méi)有集成開(kāi)發(fā)環(huán)境的情況下啟動(dòng)。如果遇到問(wèn)題,一定要參考常見(jiàn)問(wèn)題部分,它為新用戶(hù)遇到的許多問(wèn)題提供...
Java? 教程 Java教程是為JDK 8編寫(xiě)的,本頁(yè)面中描述的示例和實(shí)踐沒(méi)有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書(shū)籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買(mǎi)。 入門(mén) 介紹Java技術(shù)和安裝Java開(kāi)發(fā)軟件并使用...
仔細(xì)看看Hello World!應(yīng)用程序 現(xiàn)在你已經(jīng)看到了Hello World!應(yīng)用程序(甚至可能編譯并運(yùn)行它),你可能想知道它是如何工作的,這是它的代碼: class HelloWorldApp { public static void main(String[] args) { System.out.println(Hello World!); // Display ...
摘要:接下來(lái)繼續(xù)介紹三種架構(gòu)模式,分別是查詢(xún)分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...
Object作為超類(lèi) java.lang包中的Object類(lèi)位于類(lèi)層次結(jié)構(gòu)樹(shù)的頂部,每個(gè)類(lèi)都是Object類(lèi)的直接或間接的后代,你使用或編寫(xiě)的每個(gè)類(lèi)都繼承Object的實(shí)例方法,你不需要使用任何這些方法,但是,如果你選擇這樣做,你可能需要使用特定于你的類(lèi)的代碼重寫(xiě)它們,本節(jié)中討論的從Object繼承的方法是: protected Object clone() throws CloneNotSu...
閱讀 1893·2023-04-25 14:33
閱讀 3475·2021-11-22 15:22
閱讀 2562·2021-09-30 09:48
閱讀 2875·2021-09-14 18:01
閱讀 1822·2019-08-30 15:55
閱讀 3126·2019-08-30 15:53
閱讀 2232·2019-08-30 15:44
閱讀 732·2019-08-30 10:58