2

我已经在 Oracle Linux 上安装了 Oracle Weblogic 11g,并尝试使用 jdeveloper 11g 完成 Oracle 的 ADF 教程之一。当我运行我的项目时,它编译成功,没有错误。它开始将应用程序部署到 weblogic 服务器并打开我的默认 Internet 浏览器。但随后出现错误“500 内部服务器错误”。

我收到以下错误:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.myfaces.trinidadinternal.convert.ColorConverter at....

我在互联网上研究了这个问题,我也四处询问,常见的答案是类路径有问题。jdeveloper 中使用的库可能与 weblogic 中的库不同,然后项目被部署。

任何人都可以判断问题是否肯定是类路径?以及如何设置 jdeveloper 以将其用于 weblogic 服务器的相同类路径部署?

4

4 回答 4

3

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.war 下找到 Jar

我认为您可以使用 weblogic.xml 设置来强制 WEB-INF/lib 类优先于 server/lib 中的类加载

    <container-descriptor>     
<prefer-web-inf-classes>true</prefer-web-inf-classes>   
</container-descriptor> 
于 2012-06-14T08:31:08.023 回答
2

当您尝试加载一个试图加载另一个不在类路径上的类时,就会发生这种情况。找出 ColorConverter 需要哪些类,并确保它们在类路径中。

于 2012-06-13T17:55:26.197 回答
1

首先:你在服务器上部署什么?ADF jar 或 WAR 文件。在您的情况下 - 假设您没有在应用程序服务器上安装任何依赖 jar。您应该部署一个 WAR 文件。

在您的视图项目上 - 右键单击​​并选择项目属性。然后转到部署并编辑部署配置文件(如果没有,则创建一个)。确保选中“包括来自其他项目的库”复选框。(它在 Library Dependencies 选项卡中)。

另外:您可能会在此处找到一些有用的信息。

希望这可以帮助。迈克尔

于 2012-06-20T07:56:48.457 回答
0

使用StackTrace你可以发现classes那些丢失了。我认为你丢失了一些 jar,它应该在你的类路径中。

于 2012-06-13T18:17:08.930 回答