首页 文章

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

提问于
浏览
3

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

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

enter image description here

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

enter image description here

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

enter image description here

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

2 回答

  • 1

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

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

  • 1

    您需要将jar添加到 dep-jar 文件夹并使用包含的 build.xml 构建war文件 .

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

    <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>
    

相关问题