2017-10-17 39 views
0

Java 8中的javapackager命令能夠創建獨立的可執行文件。網上的例子通常只使用一個jar文件,但我有幾個需要捆綁到應用程序中的jar文件。該文檔指出可以通過-B選項告訴捆綁器發送classPath=path的類路徑。然而,在生成的<applicationname>.cfg文件打包的應用程序裏面有,說如何爲使用javapackager創建的可執行文件指定類路徑?

app.classpath= 

這不是由CLASSPATH參數在所有受影響的線路,但我必須手動編輯它以包括由所使用的全部罐子應用程序來使它工作。

所有這些都在macOS上,我無法在另一個平臺上試用它。

任何洞察力非常讚賞 - 例如,使用多個jar的工作示例。

回答

0

我有這個問題,並找到了一個不需要修改cfg文件的類路徑的替代解決方案。我的方法使用Maven,但可以使用Ant或腳本完成;只需要更多的工作。這個想法是創建一個包含主jar和所有依賴jar的所有內容的jar文件。這可以用一個Maven插件,像這樣做:

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-4</version> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>com.yourapp.MainClass</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

我執行階段設置爲prepare-package,使其應用​​程序綁定前運行,但你可以改變需要。最終結果是一個名爲<appName>-<version>-jar-with-dependencies.jar的單個jar包,其中包含所有依賴jar的提取內容。在與javapackager一起使用之前,您可以使用java -jar <jarName>進行測試。

+0

謝謝你的建議。這很有效,但也可能會產生許可證影響,因爲它不一定可以重新打包從第三方收到的jar文件。所以,原始問題的解決方案仍然值得讚賞。 – ukor

相關問題