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