java -jar classpath心得

來源:互聯網
上載者:User

source: http://sddhn.blog.163.com/blog/static/128187792011102454152790/


如果單個jar檔案,沒有引用到其他jar檔案,而且指定了Main-Class,可以這樣運行:
    java -jar hello.jar
如果執行的jar檔案引用了其他jar檔案,該怎麼辦。
這裡hello.jar裡面用到Log4j的Log
    java -cp log4j-1.2.14.jar -jar hello.jar
這個想當然可以執行,實際上執行會出現ClassNotFoundException的
因為使用了 -jar 選項,環境變數 CLASSPATH 和在命令列中指定的所有類路徑都被 JVM 所忽略

正確運行方式如下:
    1、
    java -cp lib\log4j-1.2.14.jar;hello.jar com.dhn.Hello    (com.dhn.Hello為主類)
    在windows下多個jar之間以分號(;)隔開,最後還需要指定運行jar檔案中的完整的主類名
    2、
    java -jar hello.jar
    但是需要修改hello.jar中的MANIFEST.MF,通過MANIFEST.MF中的Class-Path 來指定運行時需要用到的其他jar,
    其他jar可以是當前路徑也可以是當前路徑下的子目錄。多個jar檔案之間以空格隔開
    以下面的MANIFEST.MF檔案為例
    Manifest-Version: 1.0
    Main-Class: com.ibm.portalnews.entrance.Main
    Class-Path: lib\commons-collections-3.2.jar lib\commons-configuration-1.5.jar lib\commons-lang-2.3.jar lib\commons-logging.jar lib\dom4j-1.6.1.jar lib\jaxen-1.1-beta-7.jar lib\jdom.jar lib\log4j-1.2.14.jar

    其中Manifest-Version表示版本號碼,一般由IDE工具(如eclipse)自動產生
    Main-Class 是jar檔案的主類,程式的入口
    Class-Path 指定需要的jar,多個jar必須要在一行上,多個jar之間以空格隔開,如果引用的jar在目前的目錄的子目錄下,windows下使用\來分割,linux下用/分割
    檔案的冒號後面必須要空一個空格,否則會出錯
    檔案的最後一行必須是一個斷行符號分行符號,否則也會出錯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.