不含包層次的HelloWorld
java
public class HelloWorld{ public static void main(String[] args) { System
out
println(
Hello World!
); }}
保存在E:\java\src下
使用javac命令編譯
E:\java\src>javac HelloWorld
java
運行
E:\java\src>java HelloWorld
屏幕打印出
Hello World!
初學者常犯的錯誤 運行時帶了class後綴 如果你試圖使用如下命令
E:\java\src>java HelloWorld
class
系統會誤認為你運行的是HelloWorld包下的名為class的類文件
會到系統的CLASSPATH下(一般都包括當前目錄)企圖尋找HelloWorld
class
class這樣的類
這樣的類當然不存在了
並且也不可能存在
因為class是關鍵字
不能作為一個類的名字
所以會報如下錯誤信息
Exception in thread
main
java
lang
NoClassDefFoundError: HelloWorld/class
文件名大小寫錯誤 對於像Windows這樣的系統
編譯時可以不關心大小寫
比如編譯HelloWorld
java時
也可以使用
E:\java\src>javac helloworld
java
也可以編譯通過
但產生的類文件仍然是和源文件相符的
HelloWorld
class
但在運行時一定要注意大小寫
比如試圖使用如下命令運行
E:\java\src>java helloworld
將報類似於
中的錯誤
Exception in thread
main
java
lang
NoClassDefFoundError: helloworld (wrong name: HelloWorld)
包含包層次的HelloWorld
java
比如上面的HelloWorld
java修改如下
package org
javaresearch;public class HelloWorld{ public static void main(String[] args) { System
out
println(
Hello World!
); }}
編譯時有兩種方法 直接編譯 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
NoClassDefFoundErrorrg\javaresearch\HelloWorld (wrong name: org/javaresearch/HelloWorld)
哈哈
是不是有點怪怪的
那沒辦法
以後對Java的包有更深的認識時
就會明白了
使用 d <directory>編譯選項 是不是覺得上面的編譯方法有點麻煩
能不能自動在當前路徑(或任意指定的路徑)下生成包層次呢?有!使用
d <directory>編譯選項就能做到
E:\java\src >javac
d
HelloWorld
java
此時
在當前目錄下就生成了一個org\javaresearch目錄
並且輸出的
class文件也在裡面
運行
E:\java\src >java org
javaresearch
HelloWorld
系統打印
Hello 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
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19249.html