是否有一种机制来分发具有自己的JRE的应用程序?

这些好人是我的用户: http : //www.youtube.com/watch?v = o4MwTvtyrUQ

如果你不想在这里欣赏video,那就是要点:我的用户无法在浏览器和网站之间分辨文件和文件夹。

我需要创建一个Java Web应用程序(Tomcat或Jetty)并将其部署在尽可能多的计算机,Windows和Mac中。

问题是:是否有一种机制来分发具有自己的JRE的应用程序? (在Tcl世界中有starpacks和starkits,在Python世界中有py2exe和其他,这就是这个想法)。 而且,它合法吗? 我知道VM是开源的,但我不清楚库,我知道GNU Classpath,但我不知道是否所有的包都在那里。

我不想依赖已安装的JRE或具有足够权限的用户来安装JRE。 在Mac上我不想依赖Apple(我不得不从Tiger切换到Snow Leopard只是为了拥有Java 1.6,我不能把我的用户放在那个位置)

任何信息非常感谢。 谢谢! JB

编辑:我想知道我是否可以将JRE文件夹粘贴到我的app文件夹下。 这是允许的吗?

    要运行您的应用程序,用户需要J2SE Runtime Environment,
    这是Sun免费提供的。 或者,您可以重新分发 
    根据您的应用程序免费提供J2SE Runtime Environment 
    根据Runtime Environment的许可条款。

来自http://java.sun.com/j2se/1.5.0/jre/README

我还没看过细则,看来Sun打算让人们重新分配JRE。 此外,有许多产品(例如install4j)使您可以轻松地重新分发JRE,因此它似乎是合法的。

至于其余部分,您还可以使用内置服务捆绑tomcat,以便自动启动应用程序,并在桌面上创建一个到本地webapp的快捷方式,这样用户就可以免于输入ht tp:// localhost :8080 / web应用。 有很多FOSS安装程序(例如izpack)允许用户安装软件包,并管理桌面快捷方式的创建。 您提到不喜欢使用安装程序,但即使解压缩也是一种安装 – 您的用户必须选择一个他们具有写访问权限的目录,这与完全成熟的安装程序没有什么不同。

但是,考虑到用户的能力,本地安装的解决方案是否最适合他们? 在线解决方案可能提供更简单的部署(例如Java Web启动,甚至可以作为applet)。

我们在工作场所使用Install4j 。 它负责安装并在需要时安装JRE。 它不是免费的。 至少我们使用的版本不会为Mac用户提供捆绑的JRE。 但据我所知,这是由于Apple的一些限制。 Mac有自己的JRE,如果您的用户有Mac,可以安全地假设他们安装了JRE。 虽然,如果JRE的版本比您喜欢的版本旧,那么他们必须使用软件更新来检查是否有更新的版本并安装它。

在OS X中,你几乎被Apple提供的任何东西所困扰。 在其他平台中,不需要运行JRE安装程序(您正确指出用户可能无法做到),只需将JRE文件夹与应用程序捆绑在一起即可。 这就是我们的许多用户所做的事情(我的公司有一个名为InstallBuilder的多平台安装程序),我们已经打包了许多Java Web应用程序。 您可以在BitNami上看一下它们(它们都是免费的)

或者简而言之,你可以试试这个:

制作应用程序的自执行jar文件。

  • 为您的用户提供小型JRE设置(适用于jre6u7的15MB)以及您的应用。
  • 现在创建一个批处理文件(用于Windows),它将首先执行JRE安装程序。
  • 然后选择安装JRE的’bin’文件夹的路径。
  • 现在,在脚本中写入’java -jar yourAppName.jar’以运行可执行jar文件。

例如:for win.bat写下面的内容:

jre-6u7-windows-i586-p :: this will start the JRE installer C:\Program Files\Java\jre1.6.0_07\bin\java -jar yourAppName.jar :: this will start your app 

您也可以为Mac和Linux创建此类脚本。