2013-04-15 36 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重新启动没有足够内存的应用程序)。

组织桌面快捷方式以允许用户通过单击方式启动它,这是留给读者的练习。

相关问题