对于想了解在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错误
- 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 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
小编典典这是一个依赖问题。
这是我解决问题的方式:
- 用下面的简单代码编写一个新的maven项目,该程序通常因错误而崩溃,无法解析该结构是可以的。
将依赖项复制到项目pom.xml中,现在程序应该崩溃(如上所述)
不,您可以在喜欢的方法(好的猜测,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
我在解析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
这是我使用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 "Reference Handler" java.lang.IllegalMonitorStateException
Exception in thread "Reference Handler" java.lang.IllegalMonitorStateExceptionat 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 "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)的相关知识,请在本站搜索。
本文标签: