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

时间:2016-10-14 06:01:49

标签: java servlets javac

我有一个非常简单的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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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