4

我正在尝试创建一个 jar 文件,只需单击一下即可执行我的游戏。我的游戏超出了 java 的默认分配堆内存,所以我必须使用 -Xmx1000m 运行我的代码。我一直在网上进行研究,不幸的是,似乎没有办法告诉 jar 文件以超过默认内存来让我的代码变得有趣。相反,我创建了另一个类,它将使用运行时从另一个主方法中编译我的代码,并使用它创建了一个 jar 文件:

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 在其中运行一个类或组合两个不同的 jar 来解决内存堆问题?

4

2 回答 2

0

为用户提供轻松安装的整个解决方案是部署应用程序。使用Java Web 开始。它可以为应用程序设置 RAM,还可以安装桌面快捷方式来启动它。JWS 比对exec.


但是,如果 JWS 出于某种原因不适合此应用程序,请参阅IWantToBeBig会导致 Jar 拥有足够内存的 hack(类似于您exec在上面使用的方式,但在重新启动应用程序时使用起来稍微健壮一些ProcessBuilder。没有足够的内存)。

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

于 2013-04-16T02:39:46.237 回答
0

有很多方法可以做到:

  1. 正如你所提到的,通过另一个 Jar 文件来触发你的游戏文件
  2. 正如@Perception 提到的,有一个批处理文件可以启动你的游戏。但要小心,如果从网络下载,用户必须设置脚本可运行的权限
  3. 构建安装程序。在 Mac 上,使用适用于 Java 7 的 Oracle Java App bundler,适用于 Java 6 的 Apple App bundler 构建.app文件。您仍然无法重新分发它,因为不会设置必要的权限。为应用程序文件构建一个 dmg。这可以用于分发。适用于 Windows 的类似安装程序

第三种技术是最好的,因为您可以很好地打包依赖项,设置所有 JVM 参数等

于 2013-04-15T19:43:43.237 回答