如何解决“org.json.simple.JSONObject 无法解析”?

Posted

技术标签:

【中文标题】如何解决“org.json.simple.JSONObject 无法解析”?【英文标题】:How can I solve "org.json.simple.JSONObject cannot be resolved"? 【发布时间】:2017-10-04 10:48:45 【问题描述】:

当我尝试通过 Tomcat 打开我的 jsp 时,我收到以下消息:

org.json.simple.JSONObject 类型无法解析。它是从所需的 .class 文件中间接引用的。

来自类型 Ejercicio 的方法 getJSONObject() 引用缺少的类型 JSONObject。

我有一个这样的 java 类:

    package E;
    import org.json.simple.*;
    import javax.json.*;
    import org.json.*;

    public class Ejercicio 
        public int a;
        public String b;

    public Ejercicio (int a, String b) 
        this.a=a;
        this.b=b;
        

    public JSONObject getJSONObject() 
        JSONObject obj = new JSONObject();
        obj.put("a", a);
        obj.put("b", b);
        return obj;
        
    

我的jsp如下:

    <%@page import="java.io.*" %>
    <%@page import="java.util.*"%>
    <%@page import="E.Ejercicio"%>
    <%@page import="javax.json.*"%>
    <%@page import="org.json.simple.*"%>
    <%@page import="org.json.*"%>
    <%@page import="net.sf.json.*" %>

    <%  
    ArrayList<Ejercicio> miArray = new ArrayList<Ejercicio>();
    miArray.add(new Ejercicio (1,"Hola"));
    miArray.add(new Ejercicio (2,"Caracola"));
    miArray.add(new Ejercicio (3,"Perola"));
    for (Ejercicio temp:miArray) 
        out.println("<p>"+temp.b+"</p>");
        

    JSONArray jsonArray = new JSONArray();
    for (int i=0; i < miArray.size(); i++) 
        jsonArray.put(miArray.get(i).getJSONObject());
        
    %>

我已经在 WEB-INF 内的 lib 文件夹和 Tomcat lib 中添加了很多 jar,试图解决没有结果的问题(commons-beanutils-1.8.1、commons-collections-3.2.1、commons- lang-2.5、commons-logging-1.1.1、ezmorph-1.0.6、java-json、javax.json-1.0、json-lib-2.4-jdk15、json-rpc-1.0、json-simple-1.1.1-来源,org.json)。

当我编译 java 类时,我收到“一些输入文件使用未经检查或不安全的操作”消息。这可能与jps没有编译有关吗?

【问题讨论】:

【参考方案1】:

您的类路径中缺少json-simple-1.1.1.jar

如果您使用的是 Maven,请将以下内容添加到您的 pom.xml 中。

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

或者你可以从here下载。

【讨论】:

你说“从你的类路径”是什么意思?我在我的项目库中添加了json-simple-1.1.1,并使用以下语句再次编译了该类:javac -cp .;"C:\Program Files\apache-tomcat-8.5.13\webapps\Heroismo\WEB-INF\lib\*" Ejercicio.java,但是在尝试打开 jsp 时出现相同的错误。我不认识 Maven。【参考方案2】:

首先,您的项目中不需要json-simple.jar。 因此删除import org.json.simple.*

其次,最好的做法是只从你的 jar 中导入需要的类。因此你可以用

替换 import org.json.*;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONString;

【讨论】:

【参考方案3】:

对我来说,我明确地下载了 jar 并将其添加到 eclipse simple

只需按照以下步骤操作 1.在这个链接https://jar-download.com/artifacts/org.json下载.jar文件 2.找到并解压json.jar文件

在日食中 -右键单击您的项目并转到构建路径 -添加外部jar -点击应用

那是it;希望对大家有帮助

【讨论】:

另外:有时这些库在“订购和导出”选项卡中被禁用,因此即使添加了它们,项目也不会提取它们。【参考方案4】:

您的项目库中有json-simple.jar 的某个版本吗?

【讨论】:

是的。在阅读您的评论之前,我只有一个名为 json-simple-1.1.1-sources 的罐子。现在我添加了json-simple-1.1.1,但是在尝试打开jsp时出现同样的错误。【参考方案5】:

您可以下载必要的 jar,对我来说,下载我丢失的 json20140107 jar 并添加导入语句如下:

导入 org.json.JSONException;

导入 org.json.simple.JSONObject;

【讨论】:

【参考方案6】:

我在任何地方都没有看到正确的答案,但我的 TomCat JSON 库问题与工件部署有关。如果您使用的是 intelliJ,请转到项目结构 >> 工件并将 jar 添加到您的 lib 文件夹中

查看我的项目结构

【讨论】:

【参考方案7】:

这适用于 org.json 包:

从这里复制源文件

https://github.com/stleary/JSON-java

注意:这是来自http://www.json.org/的源代码链接(JSON-java)

进入 \src\org\json 文件夹

Eclipse 中,单击打开透视图按钮,然后单击资源。

右击 org.json 然后点击 Refresh 将 java 源代码添加到项目中。

【讨论】:

以上是关于如何解决“org.json.simple.JSONObject 无法解析”?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题

如何解决https传输图片的问题