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

问题描述 投票:1回答:2

我有一个需要在1.7上运行的项目1,该项目依赖于另一个基于1.8的项目2。

我试图从Project 1中的Project 2中调用一个类,但是我得到一个已知的错误,该错误在1.8中得到修复。如果我在JRE 1.8的Project 2上单独运行这个类,它运行正常。

任何导致为方法调用动态选择目标JRE?

java jce
2个回答
2
投票

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

  1. 下载并运行Launch4j
  2. 在您的eclipse项目中,单击: File -> export -> runnable jar file -> next 并选择要提取的项目的运行配置。打Finish
  3. 测试每个罐子并确保它运行是个好主意。双击,或使用cmd找到它并执行java -jar nameOfJarToTest.jar
  4. 为你的jre制作一个子文件夹。我只称我的“jre”。
  5. binlib文件夹从正确的jre复制并粘贴到您刚制作的文件夹中。如果你想运行java 8,我的位于像C:\Program Files\Java\jre1.8.0_201的地方。要更清楚,你的文件结构应该是

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并选择输出文件路径。在enter image description here下面描绘的领域
  2. 单击jre选项卡,然后在min jre字段中添加相应的jre。确保选择Only use private jdk runtimes选项。在下图所示的“捆绑jre路径”字段中键入“jre”(如果您将文件夹命名为“bin”和“lib”jre)。

enter image description here

  1. 单击“构建包装器”。它看起来像一个设置cog。 enter image description here

如果对两个jar文件执行此操作,并确保'bin'和'lib'文件夹来自您要运行的jre,则这两个程序将在不同的运行时环境中正常运行。如果你想要一个程序能够调用另一个程序,我发现geeksforgeeks网站有a very simple and concise way for you to call external executable files from your code如果你对规范路径没问题。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.