[英]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.