我已在 Oracle Linux 上安装了 Oracle Weblogic 11g,并尝试使用 jdeveloper 11g 完成 Oracle 的 ADF 教程之一。当我运行我的项目时,它编译成功,没有错误。它开始将应用程序部署到 weblogic 服务器,然后打开我的默认 Internet 浏览器。但随后出现错误“500 Internal server error”。
我收到以下错误:
java.lang.NoClassDefFoundError: 无法初始化类 org.apache.myfaces.trinidadinternal.convert.ColorConverter at....
我在互联网上研究了这个问题,我也四处询问,常见的答案是类路径有问题。可能在 jdeveloper 中使用的库与在 weblogic 中使用的库不同,然后部署项目。
谁能确定问题是否出在类路径上?? 我如何设置 jdeveloper 以部署它用于 weblogic 服务器的相同类路径?
最佳答案
java.lang.NoClassDefFoundError
表示类路径中类的运行时版本与编译时的版本不同。
您的问题可能是在部署服务器时发现类的多个版本。我注意到类 org.apache.myfaces.trinidadinternal.convert.ColorConverter
在 trinidad-impl.jar
您能否搜索在运行时服务器环境以及您自己的 webapp 库中找到多少这样的 jar?
在 Windows 上,Jdev 内置服务器在此文件夹中运行
C:\Users\<...>\AppData\Roaming\JDeveloper\system11.1.1.4.37.59.23 或类似内容
您需要在您的 webapp/WEB-INF/lib 中使用它,而不是在其他区域中。
在本地,我在 C:\Users\<...>\AppData\Roaming\JDeveloper\system11.1.1.4.37.59.23\o.j2ee.wlLibs\jsp\Trinidad-Components1.2 下找到了 Jar。 war
我认为您可以使用 weblogic.xml 设置强制加载 WEB-INF/lib 类,优先于 server/lib 中的类
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
关于java - 我该如何解决 NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020569/