首頁 >Java >java教程 >如何修復 Java 9 的 InaccessibleObjectException:JDK 和應用程式程式碼解決方案?

如何修復 Java 9 的 InaccessibleObjectException:JDK 和應用程式程式碼解決方案?

Barbara Streisand
Barbara Streisand原創
2024-12-24 11:30:12432瀏覽

How to Fix Java 9's InaccessibleObjectException:  JDK and Application Code Solutions?

如何解決 Java 9 上的 InaccessibleObjectException

使用 Java 9 時,開發人員可能會遇到 Inacc>Inacc>Inacc這是由於Java平台模組系統實現了強封裝性。

異常訊息分解:

Unable to make {member} accessible: module {A} does not "opens {package}" to {B}
導致異常的主要場景:

1。反射呼叫JDK

{A} 是JDK 模組(例如java.base)
  • {member} 和{package} 屬於JDK API
  • {member} 和{package} 屬於JDK API
  • { B}是一個函式庫/框架/應用程式模組(通常是未命名的模組@...)

2。對應用程式程式碼的反思

    {A}是應用程式模組
  • {member}和{package}屬於應用程式碼
  • {B }是框架模組或未命名模組@...

1。反射呼叫JDK 的解決方案:

使用以下命令列標誌開啟指定的套件進行反射:

java --add-opens java.base/java.lang=ALL-UNNAMED
將ALL-UNNAMED 替換為命名的名稱模組(如果適用)。

2.應用程式程式碼反射的解決方案:

編輯模組{A} 以使用其模組描述符中的以下選項之一開啟內部套件:

    匯出{package} (使其可公開存取)
  • 將{package} 匯出到{B}(使其只能存取B)
  • 開啟{package}(使其在運行時可供所有程式碼存取)
  • 開啟{package} 至{B}(使其運行時僅可由B 存取)
  • open module {A} { ... } (使整個模組在運行時可供所有程式碼存取)

以上是如何修復 Java 9 的 InaccessibleObjectException:JDK 和應用程式程式碼解決方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn