首頁 > Java > java教程 > Java 9 的非法反射存取:如何辨識、觸發和解決警告?

Java 9 的非法反射存取:如何辨識、觸發和解決警告?

Barbara Streisand
發布: 2024-12-18 17:59:14
原創
460 人瀏覽過

Java 9's Illegal Reflective Access: How to Identify, Trigger, and Resolve Warnings?

了解Java 9 中的非法反射存取

Java 9 中的非法反射存取是指某些違反封裝原則的反射操作模組這個版本。反射存取允許程式動態存取其他類別的成員,無論其可見性修飾符為何。

什麼定義了非法反射存取?

非法反射存取發生在以下情況:

  • 一個模組嘗試存取另一個未明確聲明為開放的模組的成員
  • 模組使用反射API 來呼叫模組程式碼無法存取的建構函式、欄位或方法。

非法反射存取是如何觸發的?

Java 9 運行時監視反射操作。當偵測到非法存取時,會發出警告訊息。可以透過使用以下模式之一手動指定--illegal-access JVM 參數來抑制此警告:

  • permit: 對第一次非法訪問和靜默發出警告後續的。
  • 警告:對每個非法行為發出警告
  • 拒絕:停用所有非法反射操作。

觸發警告的場景

非法當出現以下情況時,會觸發反射訪問警告遇到:

  • - -illegal-access JVM 參數設定為允許或警告。
  • 模組嘗試存取另一個對其不開放的模組的成員。
  • 反射存取是透過編譯程式碼的靜態參考或透過使用反射來發生的API。

解決非法反射存取

要避免非法反射存取警告,請考慮以下步驟:

  • 確保所有模組都聲明其依賴關係並根據需要相互打開套件。
  • 使用--add-opens VM 參數以明確開啟模組之間的套件。
  • 從編譯的程式碼中消除對 JDK 內部 API 的靜態引用。
  • 將 --illegal-access JVM 參數設定為拒絕停用非法反射操作並強制執行強封裝。

以上是Java 9 的非法反射存取:如何辨識、觸發和解決警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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