我怎样才能解决的NoClassDefFoundError?(How can i solve a No

2019-06-25 11:11发布

我已经安装在Oracle的Linux的Oracle WebLogic 11g和我试图完成使用JDeveloper11克Oracle的ADF教程。 当我运行我的项目是没有错误编译成功。 它开始将应用程序部署到WebLogic Server和我的默认网络浏览器中打开。 但随后出现的错误“500内部服务器错误”。

我收到以下错误:

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

我研究了互联网,对于这个问题,我也问了一圈,并共同答案是,有一个与类路径的问题。 也许那些在JDeveloper中使用库不是在w​​eblogic一样,那么该项目得到部署。

谁能告诉我们,如果肯定,问题是类路径? 而且我怎么能安装JDeveloper中部署它使用到WebLogic服务器的同一类路径?

Answer 1:

java.lang.NoClassDefFoundError意味着在类路径中类的运行时版本是不一样的,在编译时。

你的问题可能是类的多个版本在服务器部署被人发现。 我注意到类org.apache.myfaces.trinidadinternal.convert.ColorConverter被发现trinidad-impl.jar

你可以搜索多少个这样的瓶子在运行时服务器环境加上你自己的web应用程序库被发现?

在Windows上,内置的jdev服务器此文件夹中运行

C:\用户\ <...> \应用程序数据\漫游\ JDeveloper中\ system11.1.1.4.37.59.23或类似的东西

你需要在这你的webapp / WEB-INF / lib目录,而不是在其他领域。

在我的本地我发现在C的Jar:\用户\ <...> \应用程序数据\漫游\的JDeveloper \ system11.1.1.4.37.59.23 \ o.j2ee.wlLibs \ JSP \千里Components1.2.war

我想你可以使用weblogic.xml中设置强制WEB-INF / lib目录类来获得加载优先于在服务器/ lib中有

    <container-descriptor>     
<prefer-web-inf-classes>true</prefer-web-inf-classes>   
</container-descriptor> 


Answer 2:

这发生在你尝试加载试图加载另一个类,这是不是对的类路径。 找出哪些是由ColorConverter需要的类,并确保你有他们在你的类路径中。



Answer 3:

首先:你在部署到服务器? 一个ADF JAR或WAR文件。 在你的情况 - 因为你没有安装的应用程序服务器上的任何依赖罐子。 你应该部署WAR文件。

在您查看项目 - 单击右键,选择项目属性。 然后去部署和编辑部署配置文件(如果没有在那里创建一个)。 确保勾选“从其他项目包括库”被选中。 (这是在库的依赖选项卡)。

此外,您也可能会发现一些有用的信息在这里 。

希望这可以帮助。 迈克尔



Answer 4:

使用StackTrace你可以找到classes的缺失。我觉得你是缺少一些罐子,这应该是在你的classpath。



文章来源: How can i solve a NoClassDefFoundError?