Java常用命令


  用多了IDE后,可能很多人都忘了用java自帶的命令,但是這些命令是很有用的,下面讓我來介紹一些:

  appletviewer:

    這個命令是的作用就是幫助我們查看applet小程序。

    首先你必須有一個applet小程序的代碼,下面我們寫了一個TestApplet.java:

import javax.swing.*;
import java.awt.*;
/*
    <APPLET  code=TestApplet.class   width=200  height=300></APPLET>
*/
public class TestApplet extends JApplet {
    public void init() {
        getContentPane().add(new JLabel("Applet!"));
    }
} 

    這個代碼很簡單,我們還需要將它編譯成class文件,生成TestApplet.class,一個很關鍵的點就是我們必須寫進那個注釋的內容,定義的是一個標簽,然后我們使用:

appletviewer TestApplet

    使用該命令就可以看到一個小程序出現了,除此之外,還是用該命令搭配html文件,這個文件中也是需要有applet標簽的:

<!doctype html>
<html>
    <head></head>
    <body>
        <APPLET code=TestApplet.class   width=200  height=300></APPLET>
    </body>
</html>

使用下命令也可以看到相同的效果:

appletviewer TestApplet.html

  javac:

    這個命令我們初學的時候很經常用,但是我們只是用到了很基礎的部分,有些額外的選項還是值得我們去利用的。

用法: javac <options> <source files>
其中, 可能的選項包括:
  -g                         生成所有調試信息
  -g:none                    不生成任何調試信息
  -g:{lines,vars,source}     只生成某些調試信息
  -nowarn                    不生成任何警告
  -verbose                   輸出有關編譯器正在執行的操作的消息
  -deprecation               輸出使用已過時的 API 的源位置
  -classpath <路徑>            指定查找用戶類文件和注釋處理程序的位置
  -cp <路徑>                   指定查找用戶類文件和注釋處理程序的位置
  -sourcepath <路徑>           指定查找輸入源文件的位置
  -bootclasspath <路徑>        覆蓋引導類文件的位置
  -extdirs <目錄>              覆蓋所安裝擴展的位置
  -endorseddirs <目錄>         覆蓋簽名的標准路徑的位置
  -proc:{none,only}          控制是否執行注釋處理和/或編譯。
  -processor <class1>[,<class2>,<class3>...] 要運行的注釋處理程序的名稱; 繞過默認的搜索進程
  -processorpath <路徑>        指定查找注釋處理程序的位置
  -d <目錄>                    指定放置生成的類文件的位置
  -s <目錄>                    指定放置生成的源文件的位置
  -implicit:{none,class}     指定是否為隱式引用文件生成類文件
  -encoding <編碼>             指定源文件使用的字符編碼
  -source <發行版>              提供與指定發行版的源兼容性
  -target <發行版>              生成特定 VM 版本的類文件
  -version                   版本信息
  -help                      輸出標准選項的提要
  -A關鍵字[=值]                  傳遞給注釋處理程序的選項
  -X                         輸出非標准選項的提要
  -J<標記>                     直接將 <標記> 傳遞給運行時系統
  -Werror                    出現警告時終止編譯
  @<文件名>                     從文件讀取選項和文件名 

  用了javac命令之后對一個文件進行編譯之后,可以生成class文件,利用-verbose選項輸出有關編譯器方面的消息,下面我寫了一個簡單的Hello程序進行測試,測試結果如下:

  java:

    java是用來執行class文件的,若你的類中沒有可以執行的main方法,就不能執行了。

用法: java [-options] class [args...]
           (執行類)
   或  java [-options] -jar jarfile [args...]
           (執行 jar 文件)
其中選項包括:
    -d32          使用 32 位數據模型 (如果可用)
    -d64          使用 64 位數據模型 (如果可用)
    -server       選擇 "server" VM
    -hotspot      是 "server" VM 的同義詞 [已過時]
                  默認 VM 是 server.

    -cp <目錄和 zip/jar 文件的類搜索路徑>
    -classpath <目錄和 zip/jar 文件的類搜索路徑>
                  用 ; 分隔的目錄, JAR 檔案
                  和 ZIP 檔案列表, 用於搜索類文件。
    -D<name>=<value>
                  設置系統屬性
    -verbose[:class|gc|jni]
                  啟用詳細輸出
    -version      輸出產品版本並退出
    -version:<value>
                  需要指定的版本才能運行
    -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>[=<options>]
                  加載本機代理庫 <libname>, 例如 -agentlib:hprof
                  另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  按完整路徑名加載本機代理庫
    -javaagent:<jarpath>[=<options>]
                  加載 Java 編程語言代理, 請參閱 java.lang.instrument
    -splash:<imagepath>
                  使用指定的圖像顯示啟動屏幕

  演示一個簡單的java命令使用:

  jar:

    jar命令主要是用於打jar包,很多人很說用c或者c++可以生成exe文件,雙擊就運行,用這個命令生成jar后,也可以雙擊運行,只不過前提是你必須配置了java的運行環境。

用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
選項包括:
    -c  創建新的歸檔文件
    -t  列出歸檔目錄
    -x  從檔案中提取指定的 (或所有) 文件
    -u  更新現有的歸檔文件
    -v  在標准輸出中生成詳細輸出
    -f  指定歸檔文件名
    -m  包含指定清單文件中的清單信息
    -e  為捆綁到可執行 jar 文件的獨立應用程序
        指定應用程序入口點
    -0  僅存儲; 不使用情況任何 ZIP 壓縮
    -M  不創建條目的清單文件
    -i  為指定的 jar 文件生成索引信息
    -C  更改為指定的目錄並包含其中的文件
如果有任何目錄文件, 則對其進行遞歸處理。
清單文件名, 歸檔文件名和入口點名稱的指定順序
與 'm', 'f' 和 'e' 標記的指定順序相同。

  示例:將Hello.class和World.class文件打包進HelloWorld.jar

I:\code\java\20140330>jar -cvf HelloWorld.jar Hello.class World.class
已添加清單
正在添加: Hello.class(輸入 = 401) (輸出 = 275)(壓縮了 31%)
正在添加: World.class(輸入 = 409) (輸出 = 282)(壓縮了 31%)

  javadoc:

    javadoc命令主要是生成幫助文檔。

用法: javadoc [options] [packagenames] [sourcefiles] [@files]
-overview <file>          從 HTML 文件讀取概覽文檔
-public                   僅顯示 public 類和成員
-protected                顯示 protected/public 類和成員 (默認值)
-package                  顯示 package/protected/public 類和成員
-private                  顯示所有類和成員
-help                     顯示命令行選項並退出
-doclet <class>            通過替代 doclet 生成輸出
-docletpath <path>        指定查找 doclet 類文件的位置
-sourcepath <pathlist>    指定查找源文件的位置
-classpath <pathlist>     指定查找用戶類文件的位置
-exclude <pkglist>        指定要排除的程序包列表
-subpackages <subpkglist> 指定要遞歸加載的子程序包
-breakiterator            計算帶有 BreakIterator 的第一個語句
-bootclasspath <pathlist> 覆蓋由引導類加載器所加載的
                           類文件的位置
-source <release>         提供與指定發行版的源兼容性
-extdirs <dirlist>        覆蓋所安裝擴展的位置
-verbose                  輸出有關 Javadoc 正在執行的操作的信息
-locale <name>            要使用的區域設置, 例如 en_US 或 en_US_WIN
-encoding <name>          源文件編碼名稱
-quiet                    不顯示狀態消息
-J<flag>                  直接將 <flag> 傳遞到運行時系統
-X                        輸出非標准選項的提要

通過標准 doclet 提供:
-d <directory>                    輸出文件的目標目錄
-use                              創建類和程序包用法頁面
-version                          包含 @version 段
-author                           包含 @author 段
-docfilessubdirs                  遞歸復制文檔文件子目錄
-splitindex                       將索引分為每個字母對應一個文件
-windowtitle <text>               文檔的瀏覽器窗口標題
-doctitle <html-code>             包含概覽頁面的標題
-header <html-code>               包含每個頁面的頁眉文本
-footer <html-code>               包含每個頁面的頁腳文本
-top    <html-code>               包含每個頁面的頂部文本
-bottom <html-code>               包含每個頁面的底部文本
-link <url>                       創建指向位於 <url> 的 javadoc 輸出的鏈接
-linkoffline <url> <url2>         利用位於 <url2> 的程序包列表鏈接至位於 <url> 的文檔
-excludedocfilessubdir <name1>:.. 排除具有給定名稱的所有文檔文件子目錄。
-group <name> <p1>:<p2>..         在概覽頁面中, 將指定的程序包分組
-nocomment                        不生成說明和標記, 只生成聲明。
-nodeprecated                     不包含 @deprecated 信息
-noqualifier <name1>:<name2>:...  輸出中不包括限定符的列表。
-nosince                          不包含 @since 信息
-notimestamp                      不包含隱藏時間戳
-nodeprecatedlist                 不生成已過時的列表
-notree                           不生成類分層結構
-noindex                          不生成索引
-nohelp                           不生成幫助鏈接
-nonavbar                         不生成導航欄
-serialwarn                       生成有關 @serial 標記的警告
-tag <name>:<locations>:<header>  指定單個參數定制標記
-taglet                           要注冊的 Taglet 的全限定名稱
-tagletpath                       Taglet 的路徑
-Xdocrootparent <url>             將文檔注釋中出現的所有后跟 /.. 的 @docRoot 替換為 <url>
-charset <charset>                用於跨平台查看生成的文檔的字符集。
-helpfile <file>                  包含幫助鏈接所鏈接到的文件
-linksource                       以 HTML 格式生成源文件
-sourcetab <tab length>           指定源中每個制表符占據的空格數
-keywords                         使程序包, 類和成員信息附帶 HTML 元標記
-stylesheetfile <path>            用於更改生成文檔的樣式的文件
-docencoding <name>               輸出編碼名稱

  示例:

I:\code\java\20140330>javadoc Hello.java World.java
正在加載源文件Hello.java...
正在加載源文件World.java...
正在構造 Javadoc 信息...
標准 Doclet 版本 1.7.0_17
正在構建所有程序包和類的樹...
正在生成\Hello.html...
正在生成\World.html...
正在生成\package-frame.html...
正在生成\package-summary.html...
正在生成\package-tree.html...
正在生成\constant-values.html...
正在構建所有程序包和類的索引...
正在生成\overview-tree.html...
正在生成\index-all.html...
正在生成\deprecated-list.html...
正在構建所有類的索引...
正在生成\allclasses-frame.html...
正在生成\allclasses-noframe.html...
正在生成\index.html...
正在生成\help-doc.html...

  javah:

    這個命令主要是用於生成頭文件,可以用於jni,即是在java中調用c或者c++的代碼。

用法:
  javah [options] <classes>
其中, [options] 包括:
  -o <file>                輸出文件 (只能使用 -d 或 -o 之一)
  -d <dir>                 輸出目錄
  -v  -verbose             啟用詳細輸出
  -h  --help  -?           輸出此消息
  -version                 輸出版本信息
  -jni                     生成 JNI 樣式的標頭文件 (默認值)
  -force                   始終寫入輸出文件
  -classpath <path>        從中加載類的路徑
  -bootclasspath <path>    從中加載引導類的路徑
<classes> 是使用其全限定名稱指定的

  native2ascii:

    這個命令是將將含有本地編碼字符(既非 Latin1 又非 Unicode 字符)的文件轉換為 Unicode 編碼字符的文件。

I:\code\java\20140330>native2ascii
你好
\u4f60\u597d

  serialver:

    該命令的作用返回serialverUID。

用法: serialver [-classpath 類路徑] [-show] [類名稱...]

  運用該命令的類必須是可序列化的。

  javap:

    這個命令是反編譯器,顯示編譯類中可以訪問的方法和數據。

Usage: javap <options> <classes>
where possible options include:
  -help  --help  -?        Print this usage message
  -version                 Version information
  -v  -verbose             Print additional information
  -l                       Print line number and local variable tables
  -public                  Show only public classes and members
  -protected               Show protected/public classes and members
  -package                 Show package/protected/public classes
                           and members (default)
  -p  -private             Show all classes and members
  -c                       Disassemble the code
  -s                       Print internal type signatures
  -sysinfo                 Show system info (path, size, date, MD5 hash)
                           of class being processed
  -constants               Show static final constants
  -classpath <path>        Specify where to find user class files
  -bootclasspath <path>    Override location of bootstrap class files

  示例:

I:\code\java\20140330>javap Hello.class
Compiled from "Hello.java"
public class Hello {
  public Hello();
  public static void main(java.lang.String[]);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM