從簡單程式看java運行錯誤

來源:互聯網
上載者:User
問HelloWorld問題的人實在是太多了,而且經常都以“問一個最簡單的問題”開頭。其實回想一下,自己也是從這個階段過來的,說一句“你好”,真的是一個最簡單的問題嗎?
首先,我們要假設一下我們的平台是Windows+JDK(Linux環境下也差不多)。這個環境是相當普遍、基礎和入門的。確定已經正確安裝JDK了,下一步是小心翼翼地敲入某本教程上的HelloWorld源碼,存檔,然後編譯,javac ...問題來了:

* 錯誤1:

'javac' 不是內部或外部命令,也不是可啟動並執行程式或批次檔。
(javac: Command not found)

產生的原因是沒有設定好環境變數path。
Win98下在autoexce.bat中加入path=%path%;c:/jdk1.2/bin
Win2000下則控制台->系統->進階->環境變數->系統變數...看到了?雙擊Path,在後面加上c:/jdk1.2/bin。
當然我們假設JDK安裝在了c:/jdk1.2目錄下
好,再試試!javac HelloWorld

* 錯誤2:

HelloWorld is an invalid option or argument.

拜託,給點專業精神,java的來源程式是一定要存成.java檔案的,而且編譯時間要寫全.java呀。
OK,javac HelloWorld.java (這回總該成了吧?)

* 錯誤3:

HelloWorld.java:1: Public class helloworld must be defined in a file called
"HelloWorld.java".public class helloworld{

這個問題嘛,是因為你的類的名字與檔案的名字不一致。(誰說的,明明看到人家都有這樣寫的)OK,準確地說,一個Java來源程式中可以定義多個類,但是,具有public屬性的類只能有一個,而且要與檔案名稱相一致。還有,main方法一定要放在這個public的類之中,這樣才能java(運行)這個類。另外一點是Java語言裡面是嚴格區分大小寫,初學者要注意呀。像上例中 helloworld 與 HelloWorld 就認為是不一樣,因而...
oh... 好,改好了,嘻嘻...

javac HelloWorld.java
...(咦,怎麼什麼也沒有呀?)//faint 這就是編譯通過了!看看是不是多了一個HelloWorld.class?
按書上教的 java HelloWorld(不是java HelloWorld.class喲,因為在j2ee規範中java指令中的“.”是指路徑的意思,如果是java HelloWorld.class 那麼系統就會尋找HelloWorld目錄下的class.class檔案,這樣當然是不可能存在的)。

* 錯誤4:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

呵呵,這個嘛,就是著名的類路徑(classpath)問題啦。實際上,類路徑是在編譯過程就涉及的Java中的概念。classpath就是指明去哪裡找用到的類,就這麼簡單。由於我們的HelloWorld沒用到其它的(非java.lang包中的)類,所以編譯時間沒遇到這個問題。運行時呢,就要指明你的類在哪裡了。解決方案嘛,可以用下面的命令運行:

java -classpath . HelloWorld
“.”就代表目前的目錄。當然這樣做有點麻煩(是“太麻煩”!),我們可以在環境變數中設定預設的classpath。方法就照上述設定path那樣。將classpath設為:classpath=.;c:/jdk1.2/lib/dt.jar;c:/jdk1.2/lib/tools.jar 後面的兩個建議也設上,以後開發用的著。

java -classpath . HelloWorld(再不出來我就不學java了)

* 錯誤5:

Exception in thread "main" java.lang.NoSuchMethodError: main

(//咣當)別,堅持住。看看你的代碼,問題出在main方法的定義上,寫對地方了嗎,是這樣寫的嗎:

public static void main(String args[]) { // 一個字都不要差,先別問為什麼了...對,包括大小寫!

java -classpath . HelloWorld (聽天由命了!)
Hello World!

(faint!終於...)

歡迎來到Java世界!所以說,無法運行HelloWorld 真的並不是一個“最簡單的問題”。

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.