JRE安装如何工作?

我正在打包我的软件,并想知道JRE的安装是如何工作的。 它是否只是复制本地系统上的二进制文件并相应地设置类路径或安装程序完成任何其他步骤?

对于Windows,JRE二进制文件存储在C:\Program Files\Java\jre7中,我可以将此文件夹复制到其他计算机(具有相同的处理器32位或64位)以使JRE正常工作。 如果是这样,那么需要设置的环境变量是什么?

我可以将此文件夹复制到其他计算机(使用相同的32位或64位处理器)以使JRE正常工作

是没有问题。 除非您还想注册.jar扩展名,以便双击它们。

在这种情况下,请查看ftypeassoc命令。 他们可以在批处理文件或安装程序中执行此操作。

如果是这样,那么需要设置的环境变量是什么?

无需设置任何环境变量。

只需确保在启动应用程序时正确地限定javaw.exe(或java.exe)的路径(例如通过批处理文件)。

您可以将整个JRE放在子目录中,并根据子目录引用java.exe。 其他产品经常这样做。

您不需要设置任何环境变量。

更新

如果这是一个不是JRE工具包的商业应用程序(例如Maven或Ant之类的东西),则不要依赖全局环境变量JAVA_HOME,PATH或CLASSPATH来设置。 如果要创建运行时的批处理文件,请在应用程序的上下文中自动设置该文件,这样可以正常工作。 但是不要依赖它们在系统中设置。

所有需要的是有人更改这些以使用某些版本的1.7或1.8测试版,或者真正的任何子版本的JRE来破坏您的应用程序,然后您将获得有关您的应用程序的客户支持电话,他们所做的是将他们的JAVA_HOME改为荒谬,因为他们误读了Ant文档。

如果您提供的工具集与JDK一起使用,例如Ant或Maven,您可能希望使用它们已安装的任何JRE / JDK,因为这是您工具的重点。

如果未指定任何参数,则JRE安装程序会安装所需的二进制文件和可执行文件,但也会创建所需的Windows注册表项以配置JRE安装。

您也可以使用“-static”选项进行安装(请参阅JRE安装程序文档 ),在这种情况下除了将文件复制到指定路径之外不会执行任何其他操作。

然后,您将手动需要您的环境变量。 对于命令行,最常见的是:PATH,JAVA_HOME和CLASSPATH。

简而言之,取决于。 但是在大多数情况下,二进制兼容性和库路径的约束足以使JRE在共享环境中工作(正如我们在工作中的某些机器中所做的那样)。

因为Java提供了一个虚拟机来处理请求,并且因为它可以完全独立于系统拥有的其他一些铃声和口哨,所以你对类路径和二进制处理的直觉都是正确的。 但是 ,对于期望在第三方库提供的某些OS包中提供的格式良好且特定于系统的路径和库集的库,您可能会遇到问题。

简而言之:如果您可以选择从其安装程序安装Java,因为这将保证所有类路径详细信息,所有库,所有日志记录工具以及所有特定于系统的勘误表,但正如Andrew Finnell指出的那样, ll 仍然需要手动设置环境变量 。 对于大多数需求,只需要严格的子集(参见其他答案),但在绑定此类问题时,这是最有趣的极端情况。