Java 如何克服“禁止的包名”例外?

Java 如何克服“禁止的包名”例外?,java,securityexception,Java,Securityexception,是否可以关闭/覆盖java.lang.SecurityException:禁止的包名 我需要扩展AffineTransform类,该类在实现时缺少一些功能,我需要访问定义为包保护的成员m00、m01、。不,您不能。它是在java.lang.ClassLoader中硬编码的: if ((name != null) && name.startsWith("java.")) { throw new SecurityException ("

是否可以关闭/覆盖
java.lang.SecurityException:禁止的包名


我需要扩展AffineTransform类,该类在实现时缺少一些功能,我需要访问定义为包保护的成员
m00、m01、

不,您不能。它是在java.lang.ClassLoader中硬编码的:

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


如您所见,没有选项

您可以使用读取值。没有相应的
setMatrix
,但有构造函数

出于好奇,您所指的“功能缺失”是什么

更新:

啊,好的。Java2D实际上只是用于基本的2D转换。对于任何涉及深度的内容,您可能需要查看一些Java/OpenGL绑定

  • -Java Open GL绑定()
  • -轻量级Java游戏库
  • -来自Sun的原始3d api
更新2:

另一个要借出的图书馆是图书馆。可能的缺点是它没有得到积极的维护;上次更新于2006年。它完全专注于图像,因此您需要:

  • 渲染到
    buffereImage
  • 从中创建一个
    NullOpImage
  • PerspectiveTransform
  • 并提取最终的
    buffereImage
正如前面所指出的,检查是在类加载器中硬编码的,因此避免这一点绝非易事。但总有一个选择:-)

您可以在启动时使用该选项,或者实现一个插件来插入自己的改进。问题不在于它是否可行,而在于从工作量和总体维护角度来看,这是否是最合理的解决方案


但是,请注意,由于这会引入潜在的安全漏洞,因此无法对小程序进行这两种操作。

我指的是有理线性变换(包括透视变换)。我从
JAI
中获取了
PerspectiveTransform
,并使其
扩展仿射变换
,以便在标准
PathIterator
中编写更广泛的变换。谢谢!但我要的是2D。此外,我还想与AWT结合使用,因为我使用的
Piccolo2D
库也与AWT结合在一起。