簡體   English   中英

如何克服“禁止包裝名稱”異常?

[英]How to overcome `Prohibited package name` exception?

是否可以關閉/覆蓋java.lang.SecurityException: Prohibited package name

我需要擴展AffineTransform類,該類在缺乏功能的情況下實現,並且我需要訪問成員m00, m01, ... ,這些成員被定義為受程序包保護。

不,你不能。 它在java.lang.ClassLoader中進行了硬編碼:

    if ((name != null) && name.startsWith("java.")) {
        throw new SecurityException
            ("Prohibited package name: " +
             name.substring(0, name.lastIndexOf('.')));

...

如您所見,沒有選擇

您可以使用getMatrix(double [] flatmatrix)讀取值。 沒有對應的setMatrix ,但是有AffineTransform(double [] flatmatrix)構造函數。

出於好奇,您指的是“功能缺乏”是什么?

更新:

喔好吧。 Java2D實際上僅用於基本2D轉換。 對於涉及深度的任何內容,您可能需要查看一些Java / OpenGL綁定。

更新2:

另一個需要檢查的庫是Java Advanced Imaging(JAI)API 可能的缺點是沒有積極維護。 最近一次更新是在2006年。它完全專注於圖像,因此您需要:

  • 渲染為BufferedImage
  • NullOpImage創建一個NullOpImage
  • PerspectiveTransform NullOpImage
  • 並提取最終的BufferedImage

正如Evgeniy指出的那樣,該檢查是在ClassLoader中進行硬編碼的,因此要規避這一任務並非易事。 但是總有一個選擇:-)

一個人可以在啟動時使用Java bootclasspath選項,或者實現一個javaagent來進行自己的改進。 問題不在於它是否可行,而是就努力和整體維護而言,這是否是最明智的解決方案。

但是請注意,由於這會導致潛在的安全漏洞,因此,例如Applet都無法做到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM