部署Java程序和提供JVM参数的好方法是什么?

时间:2012-04-17 20:40:02

标签: java deployment heap java-web-start

目前我一直在将我的应用程序部署为.jar文件,因为每个操作系统的用户都可以双击它。但是,我现在需要增加最大堆大小,唯一的方法是将命令行参数(-Xmx1g)传递给JVM。我希望有可能将它包含在jar清单中,但事实并非如此。

所以现在我被迫将.bat或.csh包含在带有参数的.jar中。似乎有更好的方法来做到这一点吗?我不认为Webstart是一个很好的选择,因为.jar意味着在用户的目录中运行它写出文件。该应用程序是一个桌面GUI应用程序。

2 个答案:

答案 0 :(得分:2)

Webstart似乎是实现这一目标的好方法,如果您拥有正确的权限,则不会阻止您读取/写入用户的文件系统。

它还提供了一些有趣的“功能”,包括:

  • 透明地推送升级到用户的可能性
  • 检查用户是否使用了正确版本的JRE

在您的情况下,您只需要使用以下语法:

<j2se version="1.7+" java-vm-args="-Xmx1g" href="http://java.sun.com/products/autodl/j2se"/>

答案 1 :(得分:2)

不幸的是,无法在jar中的manifest文件中指定vmargs,因此需要一个解决方法,如:

  • 创建一个用指定的vm args
  • 启动jar文件的脚本
  • 将jar包装在可用作启动器的可执行文件中
  • 将Java代码编译为本机二进制文件

例如,第一个解决方案可以使用批处理或shell脚本轻松实现,而对于第二个解决方案,有几个替代方案可用,例如上述和本地Java Web Start和{{3}这是一个跨平台的Java可执行包装器。 第三种解决方案可以在某些情况下实现,如果您的代码与launch4j库兼容,在这种情况下,您可以使用GNU classpath编译为本机二进制文件。