栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Tomcat上访问GraphicsEnvironment.getLocalGraphicsEnvironment时发生NoClassDefFoundError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Tomcat上访问GraphicsEnvironment.getLocalGraphicsEnvironment时发生NoClassDefFoundError

似乎您已经更改了Tomcat的配置。

您已更改为al {0,1} nxx盒,或已安装在具有与测试安全性不同的安全控制的虚拟机上。

显然

 GraphicsEnvironment.getLocalGraphicsEnvironment()

尝试访问属性: java.awt.graphicsenv

它可能返回null或一些不存在的类名,然后将其加载并抛出ClassNotFoundException。1个

解决方案似乎是指定“ java.awt.headless”属性。

尝试此搜索,它显示与您类似的情况。

我记得sun bugs数据库中也有东西。

找到解决方案后将其发布!

1.
GraphicsEnvironment.java

编辑

这不是日食!

在我的原始文章中,有一个指向该类源代码的链接,该类引发了异常。

由于您似乎很想念它,因此我将其张贴在这里:

       public static synchronized GraphicsEnvironment getLocalGraphicsEnvironment() {          if (localEnv == null) {    // Y O U R   E R R O R  O R I G I N A T E S    H E R E !!!    String nm = (String) java.security.AccessController.doPrivileged       (new sun.security.action.GetPropertyAction        ("java.awt.graphicsenv", null));   try {  //long t0 = System.currentTimeMillis();       localEnv =(GraphicsEnvironment) Class.forName(nm).newInstance();  //   long t1 = System.currentTimeMillis();  //   System.out.println("GE creation took " + (t1-t0)+ "ms.");       if (isHeadless()) {localEnv = new HeadlessGraphicsEnvironment(localEnv);       }   } catch (ClassNotFoundException e) {       throw new Error("Could not find class: "+nm);   } catch (InstantiationException e) {       throw new Error("Could not instantiate Graphics Environment: " + nm);   } catch (IllegalAccessException e) {       throw new Error ("Could not access Graphics Environment: "  + nm);   }          }          return localEnv;      }

那就是执行的内容。

在您似乎没有看过的原始帖子中,我说过代码正在访问属性 “ java.awt.graphicsenv”

如果其他使用axis的项目没有相同的问题,则可能是因为它可能在不同的tomcat配置中运行,或者是Axis库允许访问该属性。但是我们不能确定。纯粹是猜测。那么,为什么不测试以下内容并查看打印出来的内容:

        String nm = (String) java.security.AccessController.doPrivileged (new sun.security.action.GetPropertyAction  ("java.awt.graphicsenv", null));    System.out.println("java.awt.graphicsenv = " + nm );

它打印为null,然后您现在出了什么问题。您的系统中没有该属性,或者安全性禁止您使用它。

从这里很难告诉您: “去编辑文件xyz并添加:fail = false ”,因此您必须做一下工作,然后找出真正的原因。

首先研究正在执行的代码是什么(我刚刚发布了代码),然后了解它的作用以及“
AccessController.doPrivileged”所有功能的工作方式。(您可以为此使用Google + StackOverflow)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/594888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号