GVKun编程网logo

在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误

15

对于想了解在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误的读者,

对于想了解在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误的读者,本文将提供新的信息,并且为您提供关于Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException、com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING、Exception in thread "Reference Handler" java.lang.IllegalMonitorStateException、Exception in thread "Thread-1" java.lang.IllegalMonitorStateException at java.lang.Object.notifyAll(Native Method)的有价值信息。

本文目录一览:

在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误

在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误

以下代码在Java 7中运行良好

import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Unmarshaller;String xmlString = ''<xml ..... '';StringReader reader = new StringReader(xmlString);JAXBContext jc = JAXBContext.newInstance(MyClass.class);Unmarshaller unmarshaller = jc.createUnmarshaller();MyClass myClass = (MyClass) unmarshaller.unmarshal(reader);....

现在我们必须升级到Java 8,现在在执行代码时遇到此异常:

Sep 03, 2014 1:42:47 PM com.sun.xml.internal.bind.v2.util.XmlFactory createParserFactorySCHWERWIEGEND: nullorg.xml.sax.SAXNotRecognizedException: Feature: http://javax.xml.XMLConstants/feature/secure-processing    at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:100)    at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:114)    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139)    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)

我知道,有一个问题,针对类似的问题,但退一步Java
7的是不是一个解决方案给我。

我试图添加以下Maven依赖项

<dependency>    <groupId>javax.xml</groupId>    <artifactId>jaxp-api</artifactId>    <version>1.4</version></dependency>

但这并没有改变结果,因此我将其删除(感谢@BlaiseDoughan提供的信息,该信息已包含在Java 6中)

欢迎任何提示,非常感谢。

答案1

小编典典

这是一个依赖问题。

这是我解决问题的方式:

  1. 用下面的简单代码编写一个新的maven项目,该程序通常因错误而崩溃,无法解析该结构是可以的。
  2. 将依赖项复制到项目pom.xml中,现在程序应该崩溃(如上所述)

  3. 不,您可以在喜欢的方法(好的猜测,Bisection,1×1 ..)之后删除依赖项以找到“不良”依赖项。也许有人有更好(更专业)的方法,这个方法对我有用。

现在您可以决定要做什么,也许有新版本可用,在我们的情况下,这是我自己的大学包,其中包括我可以排除的大学包。

public class Test {    public Test() {    }    public static void main(String[] args) {        try {            StringReader reader = new StringReader("<xml></xml>");            JAXBContext jc = JAXBContext.newInstance(TestXML.class);            Unmarshaller unmarshaller = jc.createUnmarshaller();            TestXML testXMLs = (TestXML) unmarshaller.unmarshal(reader);        } catch (JAXBException e) {            e.printStackTrace();        }    }}

和testXML类

@XmlRootElement(name="rss")@XmlAccessorType(XmlAccessType.FIELD)public class TestXML {       public TestXML() {    }    @XmlElementWrapper(name="channel")    @XmlElement(name="item")    private int i ;    public int getI() {        return i;    }        public void setI(int i) {        this.i = i;    }}

顺便说一句:就我而言,这是

<dependency>    <groupId>jcs</groupId>    <artifactId>jcs</artifactId>    <version>1.3</version></dependency>

希望能有所帮助。

Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException

Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException

我在解析json数据时遇到此错误

Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

我无法找到解决方案.我的json数据是:

{
  "user": [
    {
      "email": "wijden@jerseyrest.com",
      "firstName": "Wijden",
      "id": "1",
      "lastName": "User"
    }, {
      "email": "user@jerseyrest.com",
      "firstName": "Sample",
      "id": "2",
      "lastName": "User"
    }, {
      "email": "ingenieur@jerseyrest.com",
      "firstName": "Ingenieur",
      "id": "3",
      "lastName": "User"
    }
  ]
}

这就是我做到的方式:

Type type = new Typetoken<List<WorkItem>>() { }.getType();
List<WorkItem> workitems = (List<WorkItem>) new Gson().fromJson(resultat, type);

如果你能帮助我解决问题,我将不胜感激.提前致谢

解决方法:

为了解析你的JSON,我创建了包装响应的类,即:

public class Response {
  @Serializedname("user")
  private List<User> userList;
  //getters and setters
}

和,

public class User{
  @Serializedname("id")
  private int id;
  @Serializedname("email")
  private String email;
  @Serializedname("firstName")
  private String firstName;
  @Serializedname("lastName")
  private String lastName;
  //getters and setters
}

然后,为了解析您的JSON响应,您只需要:

Gson gson = new Gson();
Response data = gson.fromJson(yourjsonString, Response.class);

然后,您可以非常轻松地访问您的数据,例如:

User user = data.getUserList.get(i);

注意:使用注释@Serializedname对于分离JSON响应中和应用程序中的字段名称很有意义,以便遵循Java命名约定…

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING

这是我使用Gson进行序列化的第一种方法.我像这样回复了我的Android应用程序的facebook响应

我的Json:

 {"data": [
    {
        "pic_square": "https://fbcdn-profile-a.akamaihd.netxxxx1388091435_797626998_q.jpg",
        "uid": "10202xxx852765",
        "name": "Mister X"
    },
    {
        "pic_square": "https://fbcdn-profile-a.akamaihd.netxxxx1388091435_797626998_q.jpg",
        "uid": "10202xxx852765",
        "name": "Mister X"
    }
   ]
}



    try {
       final GsonBuilder builder = new GsonBuilder();
       final Gson gson = builder.create();
       JSONObject data= response.getGraphObject().getInnerjsonObject();             
       FacebookResponses facebookResponses= gson.fromJson(data.toString(),FacebookResponses.class); //exception here
       Log.i(TAG, "Result: " + facebookResponses.toString());
    } catch (JsonSyntaxException e) {
        e.printstacktrace();

}
我的课

public class FacebookResponses implements Serializable {
  private static final long serialVersionUID = 1L;
      @Serializedname("data");
      private FacebookRisp[] data;
}

class FacebookRisp implements Serializable {

    private static final long serialVersionUID = 1L;

   @Serializedname("pic_square")
   private String[] pic_square;

   @Serializedname("uid")
   private String[] uid;

   @Serializedname("name")
   private String[] name;

   public String[] getPic_square() {
        return pic_square;
   }

   public void setPic_square(String[] pic_square) {
    this.pic_square = pic_square;
   }

    public String[] getUid() {
    return uid;
   }

   public void setUid(String[] uid) {
    this.uid = uid;
   }

   public String[] getName() {
    return name;
   }

   public void setName(String[] name) {
    this.name = name;
   }

 }

我明白了
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY但在第1行第118列为STRING

更新:
我修改了爱琴海的答案,问题是[]

@Serializedname("pic_square")
private String**[]** pic_square;   //ex here and others

解决方法:

将您的FacebookResponses类更改为:

private class FacebookResponses {
    private Data[] data;
}

private class Data {
    @Serializedname("pic_square")
    private String picSquare;
    private String uid;
    private String name;
}

编辑:因为您的json响应的结构如下所示:

Exception in thread

Exception in thread "Reference Handler" java.lang.IllegalMonitorStateException

Exception in thread "Reference Handler" java.lang.IllegalMonitorStateException
at java.lang.Object.notifyAll(Native Method)
at java.lang.ref.ReferenceQueue.enqueue(ReferenceQueue.java:73)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:171)

Exception in thread

Exception in thread "Thread-1" java.lang.IllegalMonitorStateException at java.lang.Object.notifyAll(Native Method)

-------------1-3-5-7-9-
11-13-15-17-19-2-4-6-8-10-12-14-16-18-20-Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
at java.lang.Object.notifyAll(Native Method)
at test.MyTwoprintThread$2.run(MyTwoprintThread.java:66)
at java.lang.Thread.run(Unknown Source)

今天关于在Java-8“安全处理org.xml.sax.SAXNotRecognizedException导致java.lang.IllegalStateException”中解组xml错误的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android json错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException、com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING、Exception in thread "Reference Handler" java.lang.IllegalMonitorStateException、Exception in thread "Thread-1" java.lang.IllegalMonitorStateException at java.lang.Object.notifyAll(Native Method)的相关知识,请在本站搜索。

本文标签: