我有一个非常简单的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
答案 0 :(得分:2)
最好添加一行来将JSON jar复制到应用程序的WEB-INF / lib而不是Tomcat lib,因为你的应用程序使用它,而不是tomcat本身
答案 1 :(得分:1)
您还需要在运行应用程序时在类路径中提供json库。最简单的方法是将它们放在tomcat的lib文件夹中 把json-20160810.jar放在tomcat的lib中