Bluemix Java Liberty Web Project java.lang.NoClassDefFoundError: when loading third party jar

Bluemix Java Liberty Web Project java.lang.NoClassDefFoundError: when loading third party jar

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

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

而且我很确定我已将 jar 文件添加到类路径中

但是,在我 运行 应用程序(尝试推送到 bluemix 云并 运行 在 liberty profile 应用程序服务器本地)之后,它抛出 java.lang.NoClassDefFoundError

请指出我应该如何配置.....

您需要将您的 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>

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

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