当前位置: 首页 > 面试题库 >

剥离要与应用程序捆绑在一起的JRE-我可以省略什么?

罗梓
2023-03-14
问题内容

通过将文件从中复制$JAVA_HOME/jre到我的应用程序发行版中,我一直将JRE与我的应用程序捆绑在一起。这可能与Java的精神背道而驰,但是通过确保我的应用程序在经过测试的JRE版本(包括位)上运行,可以减少潜在的问题;我使用某些JNI,要求JRE是32位版本)。

它可以正常工作,但是整个发行版有些大,因此也许可以省去一些不必要的文件?实际上,$JAVA_HOME/jre/README.txt包含以下建议:

组成Java SE Runtime Environment的文件分为两类:必需和可选。卖方可以自行决定将可选文件从Java SE Runtime
Environment的重新分发中排除。

以下部分包含文件和目录的列表,可以选择使用Java SE Runtime
Environment重新分发这些文件和目录。这些不在可选文件列表中的所有文件必须包含在运行时环境的重新分发中。

…当使用自定义启动器在Microsoft
Windows上将JRE重新分发为私有应用程序运行时(其他应用程序无法访问)时,以下文件也是可选的。这些是在Internet
Explorer和Mozilla系列浏览器中用于Java支持的库和可执行文件。私有JRE重新分发中不需要这些文件。

让我感到困惑的是,可选文件的列表包括:

bin\java.exe
bin\javaw.exe
bin\javaws.exe

怎么可以java/javaw.exe选?没有它们,我应该如何启动Java应用程序?显然我(可能)不了解某些内容,或者说明完全是错误的。


问题答案:

使用自定义启动器在Microsoft Windows上将JRE作为私有应用程序运行时(其他应用程序无法访问)重新分发时,以下文件也是可选的。

如果将JVM(通过链接到其共享库)嵌入到自己的应用程序中,则不需要独立的启动器可执行文件。例如,我认为Eclipse就是这种方式。

如果您的应用使用Java可执行文件(例如,通过批处理文件),那么您当然需要它们。



 类似资料:
  • 我用的是edu。seis理学学士。启动4J插件,使用gradle构建脚本构建可分发的应用程序。我正试图用一个捆绑的JRE来制作这些。 这是格雷德尔的剧本 令人沮丧的是,这创建了一个运行的应用程序(由gradle任务createExe创建的exe),但显然没有捆绑在/旁边的JRE,大概是因为它运行是因为它返回到使用系统jre,这使得测试变得困难。如果我把一个故意损坏的jre放在 /jre/它似乎仍然

  • 问题内容: 我了解launch4j不会将JRE捆绑在中,但是您必须将其放置在它旁边。我的问题是,我应该怎么做?Maven是否有一种方法可以自动找到并复制我用来构建应用程序的JDK的JRE并将其复制到给定目录? 我试图做这样的事情: 但是程序无法启动。它显示了一个小对话框,该对话框立即消失了(它似乎是空白的,但是消失得太快了,我无法真正注意到它)。 问题答案: 更新:删除了我以前的答案,并用经过测试

  • 我有以下结构: 我不知道如何构建一切,以便: 在本地运行服务器,以便调试 制作生产tar(例如使用应用程序插件) 生产应如下所示: ktor作为主服务器 ktor应用程序有API 所有反应JS/超文本标记语言文件也由ktor提供 换句话说,我想从单个Web应用程序提供所有服务。 我知道我可以制作两个独立的服务——一个用于反应,一个用于应用编程接口。但是我想把它捆绑到一个应用程序中。 地方发展要快。

  • 我最近不得不考虑一个新的软件的部署方法,它是用以下代码编写的: 雀巢6/Express 该软件将部署在160多台服务器上,分布在整个欧洲,其中一些服务器的互联网连接非常糟糕。 我做了一些研究,很多人明确建议不要捆绑销售。主要的论点是本机扩展将失败与捆绑器,如或(剧透:这是真的,但有一个解决方案)。在我看来,这在很大程度上是由于人们不关心这个事实:的作者在这个用例中使用了几乎相同的词。所以通常,我被

  • 问题内容: 尽管它不是JRE中的组件,但它包含JDK的所有主要实现,例如Oracle JDK和OpenJDK。 不是JRE的标准组件,这意味着当我分发使用的Java应用程序时,必须将其与应用程序捆绑包一起分发,或将其包含在类路径中。 我的问题是: tools.jar是否包含依赖于平台的组件,从而阻止了它在不同平台(Windows / Linux / OSX)上的分布? 我们已经知道Oracle J

  • 问题内容: 一段时间以来,我们的Java应用程序已预先与Windows上的JRE捆绑在一起。我们有一个用C语言编写的启动器小应用程序,它使该应用程序使用我们预先捆绑的JRE。现在,随着苹果公司努力逐步淘汰Java,我们已经决定谨慎对待OSX上的类似产品。在OSX上使用预捆绑的JRE的最佳方法是什么? 问题答案: 即使我觉得这不是一个好主意(请参阅下文),您也可以将OpenJDK之类的JVM捆绑在一