問HelloWorld問題的人實在是太多了,而且經常都以“問一個最簡單的問題”開頭。其
實回想一下,自己也是從這個階段過來的,說一句“你好”,真的是一個最簡單的問題
嗎?...//think 好了,言歸正傳,let's say "HelloWorld!" in Java...
首先,我們要假設一下我們的平台是Windows+JDK(Linux環境下也差不多)。這個環境
是相當普遍、基礎和入門的。確定已經正確安裝JDK了,下一步是小心翼翼地敲入某本教
程上的HelloWorld源碼,存盤,然後編譯,javac ...問題來了:
* 錯誤1:
'javac' 不是內部或外部命令,也不是可運行的程序或批處理文件。
(javac: Command not found)
產生的原因是沒有設置好環境變量path。Win98下在autoexce.bat中加入
path=%path%;c:jdk1.2in,Win2000下則控制面板->系統->高級->環境變量->系統變
量...看到了?雙擊Path,在後面加上c:jdk1.2in。當然我們假設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 ?
(hehe..按書上教的:) java HelloWorld (!! 這個我知道,不是java HelloWorld.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.2libdt.jar;c:jdk1.2lib ools.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!") ;
}
}