Maven,jersey,org.json - ClassNotFoundException尽管导入,依赖和类路径是正确的

时间:2016-11-09 23:12:18

标签: java maven intellij-idea jersey org.json

我正在使用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想法并确保它在那里:enter image description here

如您所见,包含了库。

这里有什么问题?我做过任何检查错了吗?这是否指向org.json和glassfish / jersey之间的兼容性问题?或者这是IDE的问题吗?

0 个答案:

没有答案