簡體   English   中英

如何從與當前項目的JRE不同的JRE上的庫jar中執行方法

[英]How do I execute a method from a library jar on a different JRE than my current project's JRE

我有一個需要在1.7上運行的項目1,該項目依賴於另一個基於1.8的項目2。

我正在嘗試從Project 1中的Project 2調用一個類,但是卻遇到了一個已知錯誤,該錯誤已在1.8中修復。 如果我在JRE 1.8的Project 2上單獨運行該類,則效果很好。

有什么方法可以動態地為方法調用選擇目標JRE?

如果您願意制作一個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並選擇一個輸出文件路徑。 如下圖所示 在此處輸入圖片說明

  2. 單擊jre選項卡,然后在min jre字段中添加您各自的jre。 確保選擇選項“ Only use private jdk runtimes 在下圖所示的“捆綁的jre路徑”字段中鍵入“ jre”(如果您使用“ bin”和“ lib” jre命名該文件夾)。

在此處輸入圖片說明

  1. 點擊“構建包裝器”。 看起來像是嵌齒輪。 在此處輸入圖片說明

如果對兩個jar文件都執行此操作,並確保“ bin”和“ lib”文件夾來自要運行的jre,則這兩個程序在不同的運行時環境中都可以正常運行。 如果您希望一個程序能夠調用另一個程序,我發現geeksforgeeks網站提供了一種非常簡單明了的方法,可以讓您從代碼中調用外部可執行文件(如果您可以使用規范路徑)。

這是不可能的,如果您的項目依賴1.7,則其依賴項也應為1.7。 在運行時,所有代碼都在同一JVM中執行,因此無法動態“選擇”目標JRE。

如果您真的沒有其他選擇,並且兩個庫應該一起工作,則可以在項目1和2之間建立某種橋梁,其中項目1在單獨的JVM實例中調用項目2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM