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

时间:2019-04-29 13:31:27

标签: java jce

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

我正在尝试从Project 1中的Project 2调用一个类,但是我遇到了一个已知错误,该错误已在1.8中修复。如果我在JRE 1.8的Project 2上单独运行该类,则效果很好。

是否有人会为方法调用动态选择目标JRE?

2 个答案:

答案 0 :(得分: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. 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. 单击“构建包装器”。看起来像是嵌齿轮。 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,如果您可以使用规范路径。

答案 1 :(得分:0)

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

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