簡體   English   中英

如何使用 —patch-module java 選項在 JDK9+ 上使 Eclipse RUN 打補丁的 JRE 模塊

[英]How to make Eclipse RUN patched JRE modules on JDK9+ with the —patch-module java option

這個 SO 問題詢問如何讓 Eclipse 使用—patch-module javac 選項進行編譯

但是,我發現沒有明顯且簡單的方法可以讓 Eclipse 使用相同的配置運行編譯后的修補代碼。

即在運行/調試時也使用上述問題中描述的構建路徑/模塊依賴項配置。

經過多次無果而終,我求助於在 Launch “ Debug Configurations / Arguments / VM Arguments ”中添加“—patch-module xxxx ”以指向包含 Eclipse 編譯的類的文件夾。 例如

--patch-module java.security.jgss=/Users/xxx/svn/JGSSDebug/bin

那行得通,但有點蠻力! 有沒有我錯過的更簡單的方法?

編輯1

可以使用項目JGSSDebug 中的Java Build Path / Module Dependencies / Show JPMS Options來獲取正確的命令行語法,並手動粘貼到項目JGSSDebug-Test的 Launch Configuration 的VM Arguments中。 (...只是不要忘記在路徑的末尾將“ src ”更改為“ bin ”...)。 第一次我自己使用了語法。

結束編輯1

我正在運行 Eclipse 版本:2021-03 (4.19.0) 構建 ID:20210312-0638

背景:

為了解決 SPNEGO SSO 的問題,我們希望通過額外的日志輸出來豐富 JRE 模塊java.security.jgss中的類。

我創建了兩個 Eclipse 項目:

  1. JGSSDebug該項目包含我們將使用日志輸出修補的java.security.jgss類。 .classpath文件包含:

     <attribute name="patch-module" value="java.security.jgss=/JGSSDebug"/>'
  2. JGSSDebug-Test該項目將調用java.security.jgss 中的代碼,包括 JGSSDebug 中的修補代碼。 這取決於 JGSSDebug:

     <classpathentry combineaccessrules="false" kind="src" path="/JGSSDebug"/>

我能找到的讓 JGSSDebug-Test運行修補代碼的唯一方法是通過如上所述的“VM 參數”。

這兩個項目都沒有 module-info.java 文件。

我們使用 Azul OpenJDK 11.0.11 來編譯和運行。

它不適用於依賴項目。 每個項目都有自己專屬的Project > Properties: Java Build Path > Module Dependencies設置。

當前版本的 Eclipse 似乎存在一個問題:在模塊依賴項選項卡中,當點擊顯示 JPMS 選項...按鈕時,將顯示正確的--patch-module java.security.jgss=... ,但是在啟動配置中這些 JPMS 選項丟失了。 請確保,這已報告給 Eclipse JDT。

作為替代或解決方法,為避免在每個啟動配置中指定--patch-module java.security.jgss=... ,請將其作為默認 VM 參數添加到 JRE/JDK:

  1. 首選項Java > Installed JREs 中選擇項目中使用的 JRE/JDK 並點擊Edit...
  2. 作為默認 VM 參數輸入以下內容:
    --patch-module java.security.jgss=${workspace_loc:/JGSSDebug/bin}

暫無
暫無

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

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