Bluemix Java Liberty Web Project java.lang.NoClassDefFoundError:加载第三方jar时

时间:2015-07-23 07:48:43

标签: java classnotfoundexception ibm-cloud websphere-liberty

我使用IBM Bluemix的Java For Liberty来部署Web应用程序。

我试图获取系统env并将其转换为JSONObject

enter image description here

我非常确定已将jar文件添加到类路径

enter image description here

然而,在我运行应用程序(尝试推送到bluemix云并在自由配置文件应用服务器中本地运行)之后,它会抛出 java.lang.NoClassDefFoundError

enter image description here

请说明我应该如何配置.....

2 个答案:

答案 0 :(得分:1)

您需要将jar添加到dep-jar文件夹,并使用附带的build.xml构建war文件。

classPathDir中查找build.xml,它将如下所示。

<path id="classpathDir">
        <pathelement location="bin"/>
        <pathelement location="dep-jar/com.ibm.ws.javaee.jaxrs.1.1_1.0.1.jar"/>
    </path>

您需要将每个jar添加到该块中。例如。

    <path id="classpathDir">
        <pathelement location="bin"/>
        <pathelement location="dep-jar/com.ibm.ws.javaee.jaxrs.1.1_1.0.1.jar"/>
        <pathelement location="dep-jar/json-1.0.0.jar"/>
    </path>

或者您可以执行以下操作,其中包括dep-jar中的所有jar。

<path id="classpathDir">
    <pathelement location="bin"/>
    <pathelement location="dep-jar/com.ibm.ws.javaee.jaxrs.1.1_1.0.1.jar"/>
    <fileset dir="dep-jar/" includes="*.jar" />
</path>

答案 1 :(得分:1)

dep-jar文件夹中的jar文件不会打包最终的应用程序二进制文件(war)。它仅用于编译期间。如果您希望jar包含在war中(在运行时使用),则需要将其包含在WebContent/WEB-INF/lib文件夹中。

如果您创建并下载Java DB Web Starter样板,您将看到正确的结构设置 - WebContent/WEB-INF/lib/nosqljson.jar