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

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

Barbara Streisand
發布: 2024-12-24 11:30:12
原創
467 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板