首頁 > Java > java教程 > Java 9 的 InaccessibleObjectException:如何解決「無法讓 {Member} 可存取」?

Java 9 的 InaccessibleObjectException:如何解決「無法讓 {Member} 可存取」?

DDD
發布: 2025-01-03 07:58:39
原創
787 人瀏覽過

Java 9's InaccessibleObjectException: How to Resolve

克服Java 9 的InaccessibleObjectException:「無法使{Member} 可訪問」

理解問題

Java 9引入了Platform Module System,增強了封裝性透過限制對某些元素的存取。當嘗試繞過這些限制時,將引發 InaccessibleObjectException。錯誤訊息指定正在存取的成員、限制存取的模組以及嘗試存取該成員的模組。

解決異常

解決方案因具體情況而異導致問題的場景。

1.反射呼叫 JDK

問題:

函式庫或框架使用反射來存取 JDK 模組中的元素。

解決方案:
java --add-opens {jdk-module}/{package}={accessing-module}
登入後複製
使用用於開啟特定套件進行反射的命令列標誌。

java --add-opens java.base/java.lang=ALL-UNNAMED
登入後複製
對於例如:

2。應用程式程式碼的反射

問題:

反射用於存取應用程式模組內的元素。

解決方案:

修改應用程序用於打開包或模塊的模塊描述符

選項:
    • 將{package} 匯出到{accessing-module}
  • 開啟套件:

    • 開啟套件:
  • 開啟{package}

    • 打開包裝到特定module:
  • 開啟{package} 到{accessing-module}

    開啟{package} 到{accessing-module}

    • 開啟整個模組:
  • 開啟模組{module-to-open} {...}

      適當的選擇取決於所需的存取等級和可見性。

以上是Java 9 的 InaccessibleObjectException:如何解決「無法讓 {Member} 可存取」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板