为了账号安全,请及时绑定邮箱和手机立即绑定

如何在与当前项目的 JRE 不同的 JRE 上执行库 jar 中的方法

如何在与当前项目的 JRE 不同的 JRE 上执行库 jar 中的方法

ITMISS 2022-10-26 16:31:59
我有一个需要在 1.7 上运行的项目 1,该项目依赖于另一个基于 1.8 构建的项目 2。我正在尝试从 Project 1 中的 Project 2 调用一个类,但我收到了一个已知错误,该错误已在 1.8 中修复。如果我在 JRE 1.8 的项目 2 上单独运行这个类,它工作正常。任何导致为方法调用动态选择目标 JRE 的原因?
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

如果您愿意制作一个 jar 并为每个程序使用一个包装器,您可以将一个特定的 jre 与每个可执行文件捆绑在一起。

  1. 下载并运行Launch4j

  2. 在您的 Eclipse 项目中,单击:

    File -> export -> runnable jar file -> next

    并为您要提取的项目选择运行配置。打Finish

  3. 测试每个 jar 并确保它运行是个好主意。双击,或使用 cmd 找到它并执行java -jar nameOfJarToTest.jar.

  4. 为您的 jre 创建一个子文件夹。我只是称我的“jre”。

  5. bin将您的和lib文件夹从正确的 jre复制并粘贴到您刚刚创建的文件夹中。我的位置就像C:\Program Files\Java\jre1.8.0_201你想运行 java 8。为了更加清楚,你的文件结构应该是

someContainerFolder(你刚刚创建的文件夹)

  nameOfJarToTest.jar
  jre(folder you just made)
        bin(folder copied from the jre in your file system)
        lib(folder copied from the jre in your file system)
  1. 运行 Launch4j。添加 .jar 并选择输出文件路径。下图的字段

//img1.sycdn.imooc.com//6358f0a40001689e05760188.jpg

  1. 单击 jre 选项卡并在min jre字段中添加您各自的 jre。确保您选择了该选项Only use private jdk runtimes。在下图所示的“捆绑的 jre 路径”字段中键入“jre”(如果您使用 'bin' 和 'lib' jre 命名文件夹)。

//img1.sycdn.imooc.com//6358f0b20001d61205760225.jpg

单击“构建包装器”。它看起来像一个设置齿轮。

//img1.sycdn.imooc.com//6358f0c10001f20c01060067.jpg

如果您对两个 jar 文件都这样做,并确保“bin”和“lib”文件夹来自您要运行的 jre,那么这两个程序都将在不同的运行时环境中正常运行。如果您希望一个程序能够调用另一个程序,我发现 geeksforgeeks 网站有一种非常简单明了的方法,如果您对规范路径没问题,您可以从代码中调用外部可执行文件。



查看完整回答
反对 回复 2022-10-26
?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

这是不可能的,如果您的项目依赖于 1.7,那么它的依赖项也应该是 1.7。在运行时,所有代码都在同一个 JVM 中执行,无法动态“选择”目标 JRE。

如果您真的没有其他选择并且两个库应该一起工作,您可能会在项目 1 和 2 之间建立某种桥梁,其中项目 1 在单独的 JVM 实例中调用项目 2。


查看完整回答
反对 回复 2022-10-26
  • 2 回答
  • 0 关注
  • 49 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信