2014-10-17 41 views
1

我目前是一所高中的學生,我發現了一個名爲FBLA的俱樂部的遊戲編程競賽。我對比賽有幾個問題,所以我給他們發了電子郵件。製作一個獨立的Java EXE文件

我之前在Computer Science Stack Exchange上發表了一篇文章,在這裏您可以查看here

現在收到問題反饋後,有人評論說我應該在本網站上發佈我的下一個問題。


我的問題是,我將如何能夠與本地庫打包Java JAR文件,然後創建一個EXE,因此它將是一個獨立的?

在我的理論中,我將不得不創建jar,並在個人在他們的機器上安裝java時將所需的本機文件放入該JAR文件中,然後使用FatJar或JSmooth等程序。

如果我錯了,或者我可以更多地瞭解罐子是如何運行的,這將有相當大的幫助。


更新2014年11月8日
我終於回到了搞亂它,我下載了Launch4j。我設置並完成了所有工作,並創建了一個可執行文件,其中包含所有Java核心本機文件。我卸載了所有處理java的程序,當我去運行它時,它仍然需要java。

再次聲明我需要發生:
什麼需要做的是可執行文件就能即使有未安裝法官的計算機上的Java的任何版本運行。

回答

3

我會推薦你​​使用launch4j。 http://launch4j.sourceforge.net

我已經將它用於一些較大的項目,它工作得很好。

它可以將您的jar,依賴關係甚至JRE封裝到可執行文件中的窗口中。它有一個GUI,或者你可以從命令行運行。

+0

我已經搞砸了這個問題已經有一段時間了,最​​近我剛剛搞砸了。我下載了Launch4j,並且運行了一切。我從我的計算機中卸載了所有的java代碼以測試一個簡單的應用程序(只需打開一個JFrame),並從可執行文件的Java目錄中看到所有文件,但它仍然需要Java版本,我做錯了什麼? – CoderMusgrove 2014-11-08 21:01:08

+0

我記得在沒有嵌入JVM的時候遇到了一些類似的問題,並且它與最小/最大Java版本配置值有關。指定min作爲我擁有的最大版本,假設的java 9解決了它。不知道這是否是你看到或不是相同的問題,但如果你沒有指定最小和最大版本,我會嘗試。 – user3357118 2014-11-09 01:19:16

0

爲了使您的罐子可執行文件,你指定的主類應用程序的,任何額外的JAR文件可能需要等JAR的manifest文件:

Main-Class: MyAppMain 
Class-Path: MyLib.jar 

然後使用jar工具從Java SDK來打包類和資源文件,指定-m選項,你的清單文件的名稱:

jar cvfm MyApp.jar MyApp.mf *.class *.gif 

這將導致創建MyApp.jar。現在,如果你鍵入

java -jar MyApp.jar 

Java啓動程序將讀取清單從MyApp.jar,該文件在類路徑MyLib.jar的地方,從類MyAppMain調用的主要方法。

現在,如果你的Java應用程序需要本機庫,您還需要指定java.library.path屬性指向目錄(IES)持有這些:

java -Djava.library.path=.\bin -jar MyApp.jar 

欲瞭解更多信息和可選擇的解決方案,是指my article