HelloWorld常見問題

發表于:2007-05-25來源:作者:點擊數: 標簽:不含包層次常見問題HelloWorld
不含包層次的HelloWorld. java public class HelloWorld { public static void main( String args){ System .out.println( "HelloWorld!" ); } } 保存在E:\java\src下,使用javac命令編譯: E:\java\srcjavacHelloWorld.java 運行: E:\java\srcjavaHelloWor

不含包層次的HelloWorld.java


  1. public class HelloWorld
  2. {
  3.     public static void main(String[] args) {
  4.         System.out.println("Hello World!");
  5.     }
  6. }


保存在E:\java\src下,使用javac命令編譯:
    E:\java\src>javac HelloWorld.java
運行:
    E:\java\src>java HelloWorld
屏幕打印出:
    Hello World!

初學者常犯的錯誤


  • 1. 運行時,帶了.class后綴

  • 如果你試圖使用如下命令:
        E:\java\src>java HelloWorld.class
    系統會誤認為你運行的是HelloWorld包下的名為class的類文件,會到系統的CLASSPATH下(一般都包括當前目錄)企圖尋找HelloWorld.class.class這樣的類,這樣的類當然不存在了;并且也不可能存在,因為class是關鍵字,不能作為一個類的名字。所以會報如下錯誤信息:
    Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class
  • 2. 文件名大小寫錯誤

  • 對于像Windows這樣的系統,編譯時可以不關心大小寫。比如編譯HelloWorld.java時,也可以使用:
        E:\java\src>javac helloworld.java
    也可以編譯通過,但產生的類文件仍然是和源文件相符的:HelloWorld.class。
    但在運行時一定要注意大小寫,比如試圖使用如下命令運行:
        E:\java\src>java helloworld
    將報類似于1中的錯誤:
        Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

包含包層次的HelloWorld.java

比如上面的HelloWorld.java修改如下:
  1. package org.javaresearch;
  2. public class HelloWorld
  3. {
  4.     public static void main(String[] args) {
  5.         System.out.println("Hello World!");
  6.     }
  7. }

編譯時有兩種方法
  • 1. 直接編譯

  • E:\java\src>javac HelloWorld.java
    此時在當前目錄下輸出HelloWorld.class。此時,運行不能使用上面相同的方法,使用:
        E:\java\src>java HelloWorld
    運行時,出現如下錯誤:
        Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)
    從上述錯誤信息你也可以看到,系統可以找到HelloWorld類(因為當前路徑包含在CLASSPATH中,具體為什么會提示wrong name,有興趣的朋友參見Java語言規范),但這個類屬于org.javaresearch包。所以,你要做的就是按照上述包層次,相應的創建目錄層次,把上面生成的HelloWorld.class放到E:\java\src\org\javaresearch\目錄下。運行:
        E:\java\src >java org.javaresearch.HelloWorld
    系統打印出:
        Hello World!
    這兒要注意的是,不能使用java org\javaresearch\HelloWorld來運行,此時同樣會出現如下錯誤:
        Exception in thread "main" java.lang.NoClassDefFoundError:org\javaresearch\HelloWorld (wrong name: org/javaresearch/HelloWorld)
    哈哈,是不是有點怪怪的,那沒辦法。以后對Java的包有更深的認識時,就會明白了。
  • 2. 使用 -d <directory>編譯選項

  • 是不是覺得上面的編譯方法有點麻煩,能不能自動在當前路徑(或任意指定的路徑)下生成包層次呢?有!使用-d <directory>編譯選項就能做到。
        E:\java\src >javac -d . HelloWorld.java
    此時,在當前目錄下就生成了一個org\javaresearch目錄,并且輸出的.class文件也在里面。運行:
        E:\java\src >java org.javaresearch.HelloWorld
    系統打?。篐ello World!
    如果你想把生成的類文件集中存放在一個目錄中,比如:E:\java\classes下,那么你首先創建這個目錄,然后編譯時:
        E:\java\src >javac -d E:\java\classes HelloWorld.java
    就可以把生成的類文件放到E:\java\classes目錄下,并且按照包層次相應的創建目錄路徑。你可以在E:\java\classes\org\javaresearch下找到HelloWorld.class文件。此時使用如下命令可以正確運行(注意如果要用到其它類,請在CLASSPATH中設好):
        E:\java\classes >java org.javaresearch.HelloWorld

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97