我正在努力打包我的软件,想知道 JRE 的安装是如何工作的。它只是在本地系统上复制二进制文件并相应地设置类路径,还是安装程序完成任何其他步骤?
对于 Windows,JRE 二进制文件存储在C:Program FilesJavajre7
我可以将此文件夹复制到其他计算机(具有相同的处理器 32 位或 64 位)以使 JRE 工作。如果是这样,那么需要设置哪些环境变量?
我可以将此文件夹复制到其他计算机(具有相同的处理器 32 位或 64 位)以使 JRE 工作吗
是的,没问题。除非您还想注册.jar扩展,以便可以双击它们。
在这种情况下,请查看ftype
和assoc
命令。他们可以做到这一点,例如从批处理文件或安装程序中。
如果是这样,那么需要设置哪些环境变量?
无需设置任何环境变量。
只需确保在启动应用程序(例如通过批处理文件)时正确限定 javaw.exe(或 java.exe)的路径即可。
你可以把整个JRE放在一个子目录中,然后根据子目录引用java.exe。其他产品经常这样做。
您无需设置任何环境变量。
更新
如果这是一个不是 JRE 工具包的商业应用程序(即像 Maven 或 Ant 这样的东西),请不要依赖要设置的全局环境变量JAVA_HOME、PATH 或 CLASSPATH。如果要创建一个批处理文件,该文件在运行时会在应用程序的上下文中自动设置该文件,则可以正常工作。但不要依赖它们在系统中设置。
只需要有人更改这些内容以使用某些版本的 1.7、1.8 beta 或 JRE 的任何子版本来破坏您的应用程序,然后您将收到客户支持电话,说您的应用程序损坏,而实际上他们所做的是将他们的JAVA_HOME更改为荒谬的东西,因为他们误读了 Ant 文档。
如果您提供与 JDK 结合使用的工具集,例如 Ant 或 Maven,您可能希望使用他们安装的任何 JRE/JDK,因为这是您的工具的重点。
指定任何参数,JRE 安装程序将安装所需的二进制文件和可执行文件,但还会创建所需的 Windows 注册表项来配置 JRE 安装。
您也可以使用"-static"选项进行安装(请参阅 JRE 安装程序文档),在这种情况下,除了将文件复制到指定路径外,不会执行任何其他操作。
然后,您将需要手动使用环境变量。对于命令行,最常见的是:PATH,JAVA_HOME和CLASSPATH。
简短的版本是,这取决于。但在大多数情况下,二进制兼容性和库路径的约束足以使 JRE 在共享环境中工作(就像我们在工作中的某些机器中所做的那样)。
因为 Java 提供了一个虚拟机来处理请求,并且因为它可以完全独立于系统拥有的其他一些花里胡哨的东西来处理请求,所以你对其类路径和二进制处置的直觉是正确的。但是,您可能会遇到一些需要格式良好且特定于系统的路径和库集的库的问题,这些路径和库在第三方库提供的某些操作系统包中提供。
简而言之:如果你可以选择,从它的安装程序安装 Java,因为这将保证所有类路径详细信息、所有库、所有日志记录工具和所有特定于系统的勘误表都被考虑在内,尽管正如 Andrew Finnell 指出的那样,您仍然需要手动设置环境变量。大多数需求只需要其中的严格子集(请参阅其他答案),但在界定此类问题时,最有趣的是极端情况。