java cmd常用命令

熟悉Java的常用命令


面試例題11:使用jar命令。

請使用jar命令,將test文件夾壓縮成.jar文件,並簡述其壓縮包的結構。

考點:對於Java程序員來說,更多情況下是使用集成Java開發工具,例如JBuilder、Eclipse等,而對於最基本的Java編譯和常見的命令行工具往往都不熟悉,這個面試例題主要考查求職者對於Java命令行基本工具的使用,從而瞭解求職者對Java編程的熟悉程度。

出現頻率:★★★

解析

熟練的Java開發者應該掌握常用的Java命令行工具。求職者應該熟練掌握javac、java和jar等工具。

1.javac

javac是JDK的標準編譯工具,常見的形式爲:javac <選項> <源文件>。它可能的選項包括:

-g:生成所有調試信息。

-g:none:生成無調試信息。

-g:{lines,vars,source}:生成只有部分調試信息。

-nowarn:生成無警告。

-verbose:輸出關於編譯器正在做的信息。

-deprecation:輸出使用了不鼓勵使用的API的源程序位置。

-classpath <路徑>:指定用戶類文件的位置。

-sourcepath <路徑>:指定輸入源文件的位置。

-bootclasspath <路徑>:覆蓋自舉類文件的位置。

-extdirs <目錄(多個)>:覆蓋安裝的擴展類的位置。

-d <目錄>:指定輸出類文件的位置。

-encoding <編碼>:指定源文件中所用的字符集編碼。

-target <版本>:生成指定虛擬機版本的類文件。

常見的問題:在使用javac編譯.java源文件時找不到jar包,則需使用-classpath選項。例如:

javac -classpath .;jar01.jar;jar02.jar;……;jarN.jar class_name.java

使用-classpath選項,指定了在編譯Java源代碼時,用到類庫的位置。一般用於該類庫不在當前CLASSPATH的環境變量中。

2.java

java命令是JDK默認的java執行程序,在這裏值得注意的是在執行帶包的.class文件時,需要使用標準的Java包形式。例如:

java com.nsfc.hello

3.jar

隨着JDK安裝,在JDK安裝目錄下的bin目錄中存在一個可執行文件,Windows下文件名爲jar.exe,Linux下文件名爲jar。它的運行需要用到JDK安裝目錄下lib目錄中的tools.jar文件。jar命令行格式爲:

jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目錄] 文件名

其中{ctxu}是jar命令的子命令,每次jar命令只能包含一個子命令,這些子命令含義如下。

-c:創建新的JAR文件包。

-t:列出JAR文件包的內容列表。

-x:展開JAR文件包的指定文件或者所有文件。

-u:更新已存在的JAR文件包(添加文件到JAR文件包中)。


[vfm0M]中的選項可以任選,也可以不選,它們是jar命令的選項參數。

-v:生成具體報告並打印到標準輸出。

-f:指定JAR文件名,通常這個參數是必須的。

-m:指定需要包含的MANIFEST清單文件。

-0:只存儲,不壓縮,這樣產生的JAR文件包會比不用該參數產生的體積大,但速度更快。

-M:不產生所有項的清單(MANIFEST〕文件,此參數會忽略-m參數。

[jar-文件]:即需要生成、查看、更新或者解開的JAR文件包,它是-f參數的附屬參數。

[manifest-文件]:即MANIFEST清單文件,它是-m參數的附屬參數。

[-C 目錄]:表示轉到指定目錄下去執行這個jar命令的操作。它相當於先使用cd命令轉到該目錄下,再執行不帶-c參數的jar命令,它只能在創建和更新JAR文件包的時候使用。

文件名:指定一個文件/目錄列表,這些文件/目錄就是要添加到JAR文件包中的文件/目錄。假如指定了目錄,那麼jar命令打包的時候會自動把該目錄中的所有文件和子目錄打入包中。

使用JDK的jar命令打包,會自動在壓縮包中生成一個META-INF目錄,其中有一個MANIFEST.MF文件。

使用jar命令進行如下壓縮:

jar cf test.jar test

即將當前目錄下的test目錄所有文件壓縮到test.jar文件中,使用WinRaR軟件可以看到該壓縮文件的目錄結果如圖2.6所示。

(點擊查看大圖)圖2.6 jar壓縮文檔的結構
答案

可以使用"jar cf test.jar test"命令來完成壓縮。壓縮包中,包含一個test文件夾和一個META-INF文件夾,其中有一個MANIFEST.MF文件。

面試例題12:如何執行main()方法。

利用Java SDK中哪一條命令能夠執行test的main()方法?

(a)java test。

(b)javac test。

(c)java test.java。

(d)java test.class。

(e)java test.main。

考點:考查求職者對java命令的熟悉程度。

出現頻率:★★★

解析

求職者容易出現錯誤的是選擇了(d),實際上,java命令後面只需要class文件的名稱就可以,不用加入.class全名。如果使用java test.class命令,系統會認爲這是一個包的結構,會查找test.class.class文件。會出現如下異常信息:

Exception in thread "main" java.lang.NoClassDefaultError:test/class
提示找不到相應的類文件。

答案:(a)。

4.-Djava.ext.dirs

java命令引入jar時可以-cp參數,但時-cp不能用通配符(多個jar時什麼煩要一個個寫,不能*.jar),面通常的jar都在同一目錄,且多於1個。前些日子找到(發現)-Djava.ext.dirs太好。

如:

Java代碼 :

java -Djava.ext.dirs=lib MyClass  

java -Djava.ext.dirs=d:\Work\eclipse_workspace\Test_Project\lib   com.tangqiao.rpctest.ProtocalServer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章