您的位置:首頁 > 網絡編程 > JSP

Java的HelloWorld入門,你真的了解了嗎?

日期:2011-08-23 09:20:35 點擊: 來自: 作者:

我們學一門語言,我們最初難免都會寫個HelloWorld,這似乎成了事實上的標準了,呵呵。記得大二時,借了本Java的書,然后倒騰個HelloWorld居然也費不少了些功夫的。然后,在日常工作中排查問題時,比如什么classNotFound之類的,還有,昨天在想一些問題時,發現HelloWorld還是非常重要的,有很多東西都在里面。于是,網上找了篇文章記錄一下吧,也加入自己的一些實踐經驗和評論。

問HelloWorld問題的人實在是太多了,而且經常都以“問一個最簡單的問題”開頭。其實回想一下,自己也是從這個階段過來的,說一句“你好”,真的是一個最簡單的問題嗎?...//think 好了,言歸正傳,let's say "HelloWorld!" in java...

  首先,我們要假設一下我們的平臺是Windows+JDK(Linux環境下也差不多)。這個環境是相當普遍、基礎和入門的。確定已經正確安裝JDK了,下一步是小心翼翼地敲入某本教程上的HelloWorld源碼,存盤,然后編譯,javac ...問題來了:

  * 錯誤1:
  'javac' 不是內部或外部命令,也不是可運行的程序或批處理文件。
  (javac: Command not found)
  產生的原因是沒有設置好環境變量path。右鍵單擊”我的電腦“->屬性->高級->環境變量->系統變量...看到了?雙擊Path,在后面加上c:/java/bin。當然我們假設JDK安裝在了c:/java目錄下(有點唐僧了?)...好像還要重啟系統才起作用(不需要重啟系統的,可以重新打開一個命令行,運行即可)...(//知道了!//西紅柿)好,再試試!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了)   注意:Linux系統上環境變量大小寫是要區分的,Windows平臺不區分,Linux上都是設置PATH和CLASSPATH。這里我稍微羅嗦一下,前面一篇文章我也寫到了,(這里需要說明的是,如果$CLASSPATH為空,jdk會默認將被運行的Java類的當前路徑作為一個默認的$CLASSPATH,一但設置了$CLASSPATH變量,則會到$CLASSPATH對應的路徑下去尋找相應的類,找不到就會報錯。這個結論,我已經經過測試,并且看了下類加載器中源代碼)

  * 錯誤5:
  Exception in thread "main" java.lang.NoSuchMethodError: main
  (//咣當)別,堅持住。看看你的代碼,問題出在main方法的定義上,寫對地方了嗎,
  是這樣寫的嗎:
  public static void main(String args[]) { //一個字都不要差,先別問為什么了...對,包括大小寫!
  java -classpath . HelloWorld (聽天由命了!注:當前路徑在classpath中,則不需-classpath參數和后面點號.  .表示當前路徑)
  Hello World!
  (faint!終于...)

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


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

More..素材圖片 Picture Navigation
相關鏈接 Correlation Link
JSP熱門 Class Hot
JSP推薦 Class Commend
版權所有:中國網站資源 2005- 未經授權禁止復制或建立鏡像 This Site Tech:XHTML+DIV+CSS+Javascript
CopyRight ® 2005- www.yndjjj.com online services. all rights reserved. ICP06016627
Optimized to 1024x768 to Firefox,Netscape,Opera,MS-IE6+.
中扑网 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>