Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新到JDK1.7U45时,ImageIO将JBoss上的NPE作为7.2.0.Final放入iOreRegistry_Java_Configuration_Jboss_Java 7_Javax.imageio - Fatal编程技术网

Java 更新到JDK1.7U45时,ImageIO将JBoss上的NPE作为7.2.0.Final放入iOreRegistry

Java 更新到JDK1.7U45时,ImageIO将JBoss上的NPE作为7.2.0.Final放入iOreRegistry,java,configuration,jboss,java-7,javax.imageio,Java,Configuration,Jboss,Java 7,Javax.imageio,从21升级到JDK 1.7更新45,在JBoss中以7.2.0.Final(或EAP 6.1.0.Alpha1(作为7.2.0.Alpha1-redhat-4))运行,初始化ImageIO时,我得到NullPointerException。上载过程中用于调整图像大小的 iOreRegistry被称为ImageIO初始化的一部分,但它在以下代码处被调用: public static IIORegistry getDefaultInstance() { AppContext context

从21升级到JDK 1.7更新45,在JBoss中以7.2.0.Final(或EAP 6.1.0.Alpha1(作为7.2.0.Alpha1-redhat-4))运行,初始化
ImageIO
时,我得到
NullPointerException
。上载过程中用于调整图像大小的

iOreRegistry
被称为
ImageIO
初始化的一部分,但它在以下代码处被调用:

public static IIORegistry getDefaultInstance() {
    AppContext context = AppContext.getAppContext(); // <- context==null here??
JBoss默认导入
javax.imageio.*
包。有关这一点的证据,请参阅其中提到的javax.api,它指的是此模块:

modules/system/layers/base/javax/api/main/module.xml
我还尝试将它们显式地添加到jboss deployment structure.xml中:

    <system>
        <paths>
            <path name="javax/imageio"/>
            <path name="javax/imageio/event"/>
            <path name="javax/imageio/metadata"/>
            <path name="javax/imageio/plugins/bmp"/>
            <path name="javax/imageio/plugins/jpeg"/>
            <path name="javax/imageio/spi"/>
            <path name="javax/imageio/stream"/>
        </paths>
    </system>
但在随后的尝试中,如果不重新启动服务器,您会看到:

java.lang.NullPointerException
    javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:155)
java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO
这是有误导性的-该类对类加载器可用,但由于第一次失败而被卸载。因此,请记住在再次测试之前重新启动服务器


似乎有什么东西阻止了
AppContext.getAppContext()
返回任何有用的东西,但目前我不知道这是什么神奇的配置

我面临着同样的问题,我使用这里提到的解决方案作为临时解决办法:。这对我来说确实有用


希望甲骨文能尽快找到解决办法。

嗯,u60仍然存在这个问题。我想我们仍在等待甲骨文的修复

然而,对于我的特殊问题,这里建议的整洁工作效果很好:

我刚刚从中得出这一部分:

if(AppContext.getAppContext() == null) {
    SunToolkit.createNewAppContext();
}

由于我在其中使用的代码很少被调用,并且执行空检查的成本很低,因此我认为它不能保证使用整个
ApplicationListener
解决方案的复杂性。

NoClassDefFoundError
如果类未能初始化其静态字段,则是正常情况(类初始化只发生一次)。但我同意这是令人困惑的。另外,你确定
com.sun.imageio.*
是你要找的软件包吗?imageio在
javax.imageio
@haraldK谢谢!是的,从某个论坛复制/粘贴XML配置造成了愚蠢的疏忽。我现在在问题文本中纠正了这一点,因为很遗憾,情况也是如此(默认情况下,这些类是导入的)。这并不奇怪,因为类不是没有被加载的(我想我记得类加载器会逐出无法初始化的类-谢谢你的确认).AppContext显然不在早期的JDK更新版本中,但仍然无法解释为什么AppContext为null…
AppContext.getAppContext()
自u25以来,似乎出现了很多bug。不确定原因是什么,但希望Oracle对此进行调查。我看到过一些解决方法,它们使用反射和
setAccessible显式设置appcontext(true)
,但不确定这是否是个好主意……是的,谢谢@haraldK-我现在认为你是对的,这是一个Java错误:(现在可能会在OpenJDK上运行,一旦他们修复它,我会回到Oracle的版本。虽然我仍然有点困惑,我可以让它在JUnit中运行,但在JBoss中不运行…你能不能以某种方式修复它?我在Tomcat web应用中也有同样的问题,我不知道我能做些什么来修复它。尽管这是一个乏味的过程..我真的不知道我认为每个遇到这个问题的人都应该向Oracle提交一份错误报告,或者投票支持他们的错误跟踪系统中存在的错误。虽然不能保证这将有助于获得修复,但至少让Oracle意识到这个问题有多大并没有坏处。他们的错误跟踪系统是哪一个?
if(AppContext.getAppContext() == null) {
    SunToolkit.createNewAppContext();
}