Java servlet java.lang.NoClassDefFoundError: org/json/JSONObject

Java servlet java.lang.NoClassDefFoundError: org/json/JSONObject

我有一个非常简单的 servlet,当我添加 JSON 库并尝试 运行 它时,我有 java.lang.NoClassDefFoundError: org/json/JSONObject(没有 json 库一切正常美好的)。 我正在这样编译(在 ubuntu 中):

javac  -classpath ":./libs/json-20160810.jar:/usr/local/tomcat/lib/servlet-api.jar:." *.java && mv *.class /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/

它编译没有任何错误,它发生在 运行 时间。

我没有为此使用任何 IDE。

Servlet 运行正在 docker:

docker 文件:

FROM tomcat:7

RUN apt-get update
RUN apt-get install default-jdk --yes

COPY . /src

WORKDIR /src/

RUN mkdir -p /usr/local/tomcat/webapps/ROOT/WEB-INF/classes

RUN javac  -classpath ./libs/json-20160810.jar:/usr/local/tomcat/lib/servlet-api.jar:. *.java && mv *.class /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/

RUN cp web.xml /usr/local/tomcat/webapps/ROOT/WEB-INF

当您 运行 应用程序时,您还需要在类路径中提供 json 库。最简单的方法是将它们放在 tomcat 的 lib 文件夹中 将 json-20160810.jar 放入 tomcat

的库中

最好添加一行以将 JSON jar 复制到您的应用程序的 WEB-INF/lib 而不是 Tomcat 库,因为您的应用程序使用它,而不是 tomcat 本身