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

在OSX上使用捆绑的JRE

梁丘霖
2023-03-14
问题内容

一段时间以来,我们的Java应用程序已预先与Windows上的JRE捆绑在一起。我们有一个用C语言编写的启动器小应用程序,它使该应用程序使用我们预先捆绑的JRE。现在,随着苹果公司努力逐步淘汰Java,我们已经决定谨慎对待OSX上的类似产品。在OSX上使用预捆绑的JRE的最佳方法是什么?


问题答案:

即使我觉得这不是一个好主意(请参阅下文),您也可以将OpenJDK之类的JVM捆绑在一起,然后使用调用java可执行文件的小脚本启动应用程序。

注意:我不知道是否允许重新分发JVM(合法),您应该在下载前检查协议

  • 您将遇到的第一个问题是,目前只有Apple版本或 Oracle Java 7u6 Mac OS X Port Developer预览版本 (这只是预览)。(例如,http : //jdk7.java.net/macportpreview/)。将来苹果停止提供自己的版本时,这种情况将会改变。因此,目前您只能在Lion上运行预览。但我将向您展示一个例子。

  • 下载安装程序,挂载磁盘映像,右键单击插件,选择“显示软件包内容”解压缩Home文件夹,其中包含JRE

  • 然后,您可以检查

    $ ./Home/bin/java
    

    java version “1.7.0_06-ea”
    Java(TM) SE Runtime Environment (build 1.7.0_06-ea-b18)
    Java HotSpot(TM) 64-Bit Server VM (build 23.2-b08, mixed mode)

然后我将重命名Homejre

  • 如果将此文件夹与您的应用程序打包在一起,则只需包含一个小脚本即可

    #!/bin/sh
    

    ./jre/bin/java -classpath myniceapplication.jar

  • 为了能够构建应用程序,您将需要一个applicationname.app/Contents/MacOS包含脚本的文件夹(应命名为applicationname)。

  • 现在看来您需要在这些脚本中使用绝对路径

    /Path/applicationname.app/Contents/MacOS/jre/bin/java -classpath myniceapplication.jar
    

我想有一个更好的解决方案来构建Mac OS X应用程序捆绑包,但我不是专家。这个例子只是为了证明它可以工作。

总结:

  • 检查是否允许重新分发JRE(并检查条件)

  • 我不会这样做,因为每次JRE安全更新时,您都必须保持更新并更新您的应用程序

  • 作为用户,我比随机开发人员(没有任何个人知识:-)更信任Oracle来获得JRE。



 类似资料:
  • 我和rvm在OSX Marvericks上。从bundler安装像nokogiri这样的本机扩展失败。但从gem命令安装是可行的。 我还安装了最新的XCode命令行工具。 我不知道bundle安装和gem安装有什么区别。 gem安装的结果。 相关软件的版本: 添加:我的bundler配置

  • 问题内容: 我正在尝试使用将.jar捆绑到MacOSX应用程序捆绑中。 我正在关注本教程。 它说要在高级项目目录中添加一个文件夹,但是我不知道这意味着什么。我一直在到处寻找它,但是我找不到它。这是我唯一的问题,有人知道吗? 编辑: 这是我的文件: 谢谢! 问题答案: 好吧,所以,经过一番游戏之后,这就是我的理解… 下载Java Application Bundler并将其放置在项目目录中。您将需要

  • 这让我很惊讶,因为如果我没有安装Java的话,我怎么能开发Android应用呢?!实际上,Android Studio附带了捆绑的JDK/JRE(位于),但是系统没有找到它:executive给出 将设置为没有帮助--不喜欢它是一个目录。 问:我不想安装新的JDK,如果我已经有一个在Android Studio。如何将其设置为系统默认值?

  • 问题内容: 从下一个版本的Mac OS X开始,Java将不再包含在系统中,并且我不想强迫客户自己安装它。因此,我想做我在Windows上所做的事情- 将其与我的应用捆绑在一起。它还给了我一些希望,使其可以包含在Mac App Store中。 我可以在哪里下载可以包含在应用程序中的Mac OS X JRE?还是可以只复制Mac上安装的一个? 问题答案: 更新(4/15/2013): 正如Thorb

  • 我正在将我的spring-java项目转移到OSGi。 我有一些依赖项,这些依赖项在spring ebr repo或maven repo中不能作为包提供。处理它们的最佳方法是什么? null

  • 我编写了一个定制的NiFi处理器,它使用一些Hadoop类,处理流文件,并在Avro之间序列化流文件。 处理器的pom.xml文件如下所示: 因为我已经将标记为,所以它不会绑定在生成的NAR文件中。现在,我可以做一个快速修复,完全删除作用域并创建NAR,但NiFi会抱怨next class not found错误。 我想知道: