2012-01-20 39 views
2

大家好,如何將基本罐子'改爲可改變的罐子?

我有大約10罐和運行我的節目,我調用以下:

java -Xmx1024m -cp a.jar;b.jar;c.jar;whatever.jar -Dfile.encoding=UTF-8 [package][class] 

我想使這個作爲一個可執行的JAR。我認爲,當我unjar(聽起來很奇怪,但我使用java命令 - 不使用一般的zip程序)包含[package][class],更新manifest.mf和罐子它的罐子。不幸的是,這不起作用。

我可以把它做成可執行文件jar或者我應該解開它並總結一切嗎?

+0

[java eclipse create executable jar]可能的重複(http://stackoverflow.com/questions/8159046/java-eclipse-create-executable-jar) – Perception

回答

1

你只需要在你的manifest文件這一行

Main-Class: my.package.Main 

然後運行與m標誌jar命令,並給它的清單文件的名稱:

jar cmf manifest main.jar *.class 

不幸的是,罐子不能包含其他罐子。給包含入口點的罐子一個Main-Class,然後設置類路徑,以便可以訪問其他9個罐子。

+0

呃。我聽說-cp不能和-jar命令一起工作..是嗎?如何在清單文件中放置'Class-Path:a.jar b.jar c.jar ~~~'?(由問題作者) –

+0

我想爲Andrew Thompson添加+1 - 非常感謝。 –

+0

它幫了我很多:) Thx的幫助 –

-1

Jar是文件的集合。爲了使jar成爲一個可執行文件,最重要的是它應該包含一個具有主要()方法的類。因此,只有包含具有主方法的.class文件時,纔可以創建jar可執行文件。那個班會看起來像這樣。

public class AClass 
{ 
    public static void main(String[] args) 
    { 
     ... 
    }jar 
     ... 
} 

然後,只有這樣你才能製作一個jar可執行文件。

如果main()方法類存在。然後讓jar可執行文件執行此操作。

  1. 解壓JAR
  2. 在manifest文件中加入這行Main-Class:AClass,不要忘了此行後按enter。按照這個link
  3. Rejar類文件。你現在得到了可執行的jar文件

要執行這個jar,(假設你做了一個.jar可執行文件),然後運行java -jar a.jar來運行這個jar文件。

第二件事是您在問題中發佈的命令不需要這些罐子是可執行的。當你使用-cp時,那麼參數(即a.jar etc ..)基本上是庫或者換句話說,當java將尋找一個類文件來找到類或函數的定義或者其他任何事情時,它會查看這些jars裏面的內容,如果它正在尋找的不是Java標準庫的一部分。

+0

創建一個'脂肪罐'通常不是要走的路。 1)偶爾會違反API的許可安排。 2)它會一直刪除包含的任何數字簽名。 3)它在JWS中消除了自動更新的很多好處。 -1 –