eclipse 打包 jar 讀取外部的設定檔 圖片等 fatjar MANIFEST.MF Class-Path

來源:互聯網
上載者:User

 

這裡主要是對今天遇到的打包問題進行記錄...

 

以便以後忘了或者可能會協助到需要協助的人...

 

 

我遇到的問題有:

 

1.fatjar打包問題

如果用了第三方jar包,想把自己的項目一次性打包成一個jar,那麼需要去下載fatjar,怎麼安裝我就不贅述了。

 

2.圖片顯示問題

我的項目裡面介面引用了圖片,直接在eclipse可以正常顯示,但是打包出去顯示不了

原因之一是My Code寫了引用的地址是 "src/xxx.jpg" ,這樣的錯的,因為編譯過後會放到bin目錄下,那樣就找不到 "src/xxx.jpg"

而且最好是用一個專門的檔案夾來放這樣的檔案 比如"resource/xxx.jpg"

引用地址的時候寫成resource的相對路勁 "/resource/xxx.jpg" 即可。

 

Toolkit tk = Toolkit.getDefaultToolkit();Image image = tk.createImage("/resource/xxx.jpg");

後來我圖片引用得很多 我就寫了一個類來放這些靜態變數 然後其他地方引用這些靜態變數即可 目的是好維護。

 

3.jar引用外部圖片的問題

我想把我的圖片不打包進jar,而是在jar的外面,那樣方便我以後替換。

tk.createImage("/resource/xxx.jpg");的createImage可以給URL和filename

我開始用的URL

this.class.getResource("/resource/xxx.jpg");取圖片路勁,

但是無論怎麼取 這個方法都只能得到 我的項目/bin/ 這個目錄

不能得到bin的同級或者上面層級的目錄,不知是不是我用法沒對。

最後換成

String filename = System.getProperty("user.dir") + "/resource/xxx.jpg";createImage(filename);

 

的方法解決問題。

感覺要是jar包引用外部圖片的話 只能給filename 用 URL 始終不行...

 

4.Class-Path問題

總感覺fatjar打包不太好,而且打包出來會多一些fatjar的包 大概30KB左右

還是自己在MANIFEST.MF修改Class-Path很好

注意空格

 

Manifest-Version: 1.0Main-Class: hnysms.ShowMeClass-Path: . lib/log4j-1.2.15.jar lib/jdsmsserver-3.4.jar lib/mysql-connector-java-5.1.3-rc-bin.jar

 

 

5.jar讀取外部設定檔的問題

我想把我項目裡面的設定檔 比如dbconfig.properties log4j.xml 不打包進jar

因為打包進去跟寫入程式碼沒多大區別了..

dbconfig.properties 直接可以在讀取的代碼裡面寫成

InputStream ins = getClass().getResourceAsStream("/resource/dbconfig.properties");

這樣在eclipse會出錯 打包出來是可以的。

 

但是log4j.xml 需要在你的main方法裡面寫

PropertyConfigurator.configure(System.getProperty("user.dir") + "/resource/log4j.xml"); 

這樣問題就解決了...

 

付一張做好的程式

^_^ 很小菜的

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.