目前我一直将我的应用程序部署为 .jar 文件,因为每个操作系统的用户都可以双击它。但是,我现在需要增加最大堆大小,唯一的方法是将命令行参数 (-Xmx1g) 传递给 JVM。我希望可以将它包含在 jar 清单中,但事实并非如此。
所以现在我不得不在具有参数的 .jar 中包含一个 .bat 或 .csh 。似乎有更好的方法可以做到这一点?我不认为 Webstart 是一个好的选择,因为 .jar 旨在在用户目录中运行,它会在其中写出文件。该应用程序是一个桌面 GUI 应用程序。
目前我一直将我的应用程序部署为 .jar 文件,因为每个操作系统的用户都可以双击它。但是,我现在需要增加最大堆大小,唯一的方法是将命令行参数 (-Xmx1g) 传递给 JVM。我希望可以将它包含在 jar 清单中,但事实并非如此。
所以现在我不得不在具有参数的 .jar 中包含一个 .bat 或 .csh 。似乎有更好的方法可以做到这一点?我不认为 Webstart 是一个好的选择,因为 .jar 旨在在用户目录中运行,它会在其中写出文件。该应用程序是一个桌面 GUI 应用程序。
Webstart 似乎是实现这一目标的好方法,如果您拥有正确的权限,则没有什么能阻止您读取/写入用户的文件系统。
它还提供了几个有趣的“功能”,包括:
在您的情况下,您只需要使用以下语法:
<j2se version="1.7+" java-vm-args="-Xmx1g" href="http://java.sun.com/products/autodl/j2se"/>
不幸的是,无法在 jar 内的清单文件中指定 vmargs,因此您需要一种解决方法,例如:
例如,第一个解决方案可以使用批处理或 shell 脚本轻松实现,而对于第二个解决方案,有几种可能有用的替代方案,例如前面提到的原生Java Web Start和作为跨平台 Java 可执行文件的launch4j包装。第三种解决方案可以在某些情况下实现,如果您的代码与GNU 类路径库兼容,在这种情况下,您可以使用GCJ编译为本机二进制文件。