![](/img/trans.png)
[英]How to make Eclipse compile patched modules on JDK 9+ by passing the --patch-module javac option to my project compiler? (see pic)
[英]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 項目:
JGSSDebug該項目包含我們將使用日志輸出修補的java.security.jgss類。 .classpath文件包含:
<attribute name="patch-module" value="java.security.jgss=/JGSSDebug"/>'
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:
--patch-module java.security.jgss=${workspace_loc:/JGSSDebug/bin}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.