2013-04-15 35 views
4

我想創建一個jar文件,只需點擊一下就可以執行我的遊戲。我的遊戲超過了Java默認分配的堆內存,所以我必須使用-Xmx1000m運行我的代碼。我一直在網上進行研究,不幸的是,似乎沒有辦法通過超過默認內存的方式來告訴jar文件來使我的代碼更有趣。相反,我創造了另一個類,將使用運行時從另一個主要的方法中編譯我的代碼,並使用此創建一個jar文件:Jar文件在使用runtime.getRuntime()時如何工作exec()

import java.io.*; 
public class RuntimeExec{ 
public static void main(String[] args){ 
    try 
    { 
    Process process = Runtime.getRuntime().exec("java -Xmx1000m Controller"); 
    process.waitFor(); 
    int exitCode = process.exitValue(); 
    if(exitCode == 0) { /* success*/ } 
    else { /*failed*/ } 
    } 
    catch (Exception e) 
    {e.printStackTrace();} 
} 

} 

然而,這工作我覺得它僅適用,因爲它運行我現有類的文件夾中而不是我在罐子裏存放的那個。有沒有辦法讓jar能夠運行一個類,或者結合兩個不同的jar,這將允許我解決內存堆問題?

+2

爲什麼不使用批處理文件來啓動您的應用程序? – Perception

+2

重讀這個問題後,我意識到這是一個重複。 –

回答

0

有做它的許多方面:

  1. 正如你提到的,具有觸發您的遊戲文件
  2. 作爲@Perception提到的另一個Jar文件,有一個批處理文件,將開始你的遊戲。但要小心,如果從說網下載,用戶將不得不設置腳本的運行權限
  3. 構建安裝程序。在Mac上,使用適用於Java 7的Oracle Java App bundler,Apple App Bundler for Java 6構建.app文件。您仍然無法重新分配它,因爲不會設置必要的權限。爲應用程序文件構建一個dmg。這可以用於分發。 類似的Windows安裝程序

第三種技術是最好的,因爲你可以接包依賴良好,將所有JVM參數等

0

提供一個易於安裝,爲用戶的整個解決方案是部署應用程序。使用Java Web Start。它可以爲應用程序設置RAM,並安裝桌面快捷方式啓動它。 JWS比exec(實施不佳)的呼叫更健壯。


但是,如果JWS是不是適合這個應用中的一些道理,看到IWantToBeBig的黑客工具,將導致廣口瓶中,有足夠的內存(類似於你如何使用exec以上,但略有使用更穩健ProcessBuilder重新啓動沒有足夠內存的應用程序)。

組織桌面快捷方式以允許用戶通過單擊方式啓動它,這是留給讀者的練習。

相關問題