1、編譯
編寫MyProgram.java文件,內容如下:
public class MyProgram { public static void main(String[] args) { System.out.println("hello world"); } }
注意:這里沒有聲明包名,只做了一個最簡單的輸出helloworld。
用命令行打開java文件所在的目錄,然后運行如下命令行,生成class文件:
javac MyProgram.java
此時,會在當前目錄下生成java文件對應的class文件。

2、運行
在命令行上輸入如下命令:
java MyProgram
注意:這里沒有指定后綴是什么文件,java程序默認會找到class文件進行運行。其實這里的名稱代表了一個類名,通常情況下類型和文件名是保持一致的,而這里由於省略了包名,當加上包名時,運行的方法應該為:包名.類名。
注意2:如果加了包名,那么一定不能進入到這個包里面運行,要在包名外面運行,比如class/com/jsoft/test/App.class,運行時需要加上包名,並且要在class這層目錄下運行,如:class>java com.jsoft.test.App
結果如下:

3、命令行解釋及文件說明
java文件:這個就是源文件。
javac命令:javac是java語言編程編譯器,負責把java源文件編譯成字節碼class文件。參考:http://baike.baidu.com/item/javac
class文件:java字節碼文件,這個是跨平台的關鍵,一份java代碼對應一份class文件,然后通過java虛擬機JVM進行對應的平台轉換(JIT方式)成不同平台的機器碼,從而實現跨平台。那么一般一個java的類會生成對應的class的文件,有多少類就有多少的字節碼文件。
java:Java 應用程序啟動器,同時也是java的虛擬機JVM,用於運行java的字節碼文件,翻譯成對應的機器碼。(控制台)
javaw:(GUI程序)
javaws:(用於web應用程序)
其它:
jdb:Java 應用程序調試程序
javah:C 頭文件和 stub 文件生成器
javap:類文件解析器
javadoc:API 文檔生成器
jar:JAR 歸檔工具 Java 擴展框架
4、參考資料
java字節碼的深入理解:http://www.importnew.com/13107.html
5、測試工程
https://github.com/easonjim/5_java_example/tree/master/commandlinetest
題外:
其實上面測試只是簡單的命令行運行,像比較復雜的有多個類,以及多個jar包的互相依賴的,可以參考這里的文章:http://www.cnblogs.com/yjmyzz/p/executable-jar.html。這篇文章所說的不是jar包的打法,而是如何使用java命令行去運行。
以下為java命令行的幫助說明:java -h
用法: java [-options] class [args...] (執行類) 或 java [-options] -jar jarfile [args...] (執行 jar 文件) 其中選項包括: -d32 使用 32 位數據模型 (如果可用) -d64 使用 64 位數據模型 (如果可用) -server 選擇 "server" VM 默認 VM 是 server. -cp <目錄和 zip/jar 文件的類搜索路徑> -classpath <目錄和 zip/jar 文件的類搜索路徑> 用 ; 分隔的目錄, JAR 檔案 和 ZIP 檔案列表, 用於搜索類文件。 -D<名稱>=<值> 設置系統屬性 -verbose:[class|gc|jni] 啟用詳細輸出 -version 輸出產品版本並退出 -version:<值> 需要指定的版本才能運行 -showversion 輸出產品版本並繼續 -jre-restrict-search | -no-jre-restrict-search 在版本搜索中包括/排除用戶專用 JRE -? -help 輸出此幫助消息 -X 輸出非標准選項的幫助 -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] 按指定的粒度啟用斷言 -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] 禁用具有指定粒度的斷言 -esa | -enablesystemassertions 啟用系統斷言 -dsa | -disablesystemassertions 禁用系統斷言 -agentlib:<libname>[=<選項>] 加載本機代理庫 <libname>, 例如 -agentlib:hprof 另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help -agentpath:<pathname>[=<選項>] 按完整路徑名加載本機代理庫 -javaagent:<jarpath>[=<選項>] 加載 Java 編程語言代理, 請參閱 java.lang.instrument -splash:<imagepath> 使用指定的圖像顯示啟動屏幕 有關詳細信息, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
