我正在使用intellij idea和Maven这个项目 - 一个基于glassfish的REST Web服务。我正在尝试执行以下方法:
import org.json.*;
public void loadDestinations() throws Exception{
InputStream is = InfoLoader.class.getResourceAsStream("/destinations.json");
String jsonTxt = is.toString();
JSONObject obj = new JSONObject(jsonTxt);
JSONArray arr = obj.getJSONArray("destinations");
//etc...
但是,当服务器启动时,我得到以下异常:
java.lang.NoClassDefFoundError: org/json/JSONObject
Startup of context /aos_project_artifact_war failed due to previous errors]]
[2016-11-09T23:52:34.262+0100] [glassfish 4.1] [SEVERE] [AS-WEB-CORE-00108] [javax.enterprise.web.core] [tid: _ThreadID=42 _ThreadName=admin-listener(4)] [timeMillis: 1478731954262] [levelValue: 1000] [[
ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.json.JSONObject
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5954)
at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
[2016-11-09T23:52:34.264+0100] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=42 _ThreadName=admin-listener(4)] [timeMillis: 1478731954264] [levelValue: 900] [[
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.json.JSONObject
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.json.JSONObject
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1044)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
我已经在网上搜索了这个,答案似乎说明了以下其中一个:
1)添加导入(我知道,intellij中的代码完成也可以正常工作)
2)将依赖性添加到pom.xml(我也有以下形式:)
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
<scope>compile</scope>
</dependency>
我甚至尝试添加<scope>compile</scope>
,由其中一个线程引用(因此删除它不起作用)
3)确保它在我的类路径中。所以,我去了intellij想法并确保它在那里:
如您所见,包含了库。
这里有什么问题?我做过任何检查错了吗?这是否指向org.json和glassfish / jersey之间的兼容性问题?或者这是IDE的问题吗?