我正在处理我的代码并获取“java.util.ConcurrentModificationException”。我用谷歌搜索它,并且知道只有在你尝试修改正在进行的迭代变量时才会出现这种错误,我觉得这种情况并不存在。以下是我的代码。
// This line is having an error
for(Statement s: _mConsumableStatements)
{
System.out.println("s:"+s);
Boolean isConflict=false;
Resource uri=s.getSubject();
System.out.println("uri:"+uri);
System.out.println("1");
if(RepStatementsAsHash.containsKey(uri))
{
System.out.println("2");
if(RepStatementsAsHash.get(uri).containsKey(RDFS.LABEL))
RepStatementsAsHash.get(uri).remove(RDFS.LABEL);
else if(RepStatementsAsHash.get(uri).containsKey(RDFS.SUBCLASSOF))
RepStatementsAsHash.get(uri).remove(RDFS.SUBCLASSOF);
else if(RepStatementsAsHash.get(uri).containsKey(RDFS.RANGE))
RepStatementsAsHash.get(uri).remove(RDFS.RANGE);
else if(RepStatementsAsHash.get(uri).containsKey(RDF.TYPE))
{
System.out.println("2.1");
Value RepTypeObject=RepStatementsAsHash.get(uri).get(RDF.TYPE);
Value ConsumableTypeObject=CStatements.get(uri).get(RDF.TYPE);
if (RepTypeObject.stringValue().equals(OWL.CLASS) || RepTypeObject.stringValue().equals(RDFS.CLASS))
{
if(ConsumableTypeObject.stringValue().equals(OWL.DATATYPEPROPERTY) || ConsumableTypeObject.stringValue().equals(OWL.OBJECTPROPERTY) || ConsumableTypeObject.stringValue().equals(RDF.PROPERTY))
{
isConflict=true;
//_mConflictingStatements.add(s);
}
else
{
RepStatementsAsHash.get(uri).remove(RepTypeObject);
}
}
else if(RepTypeObject.stringValue().equals(OWL.DATATYPEPROPERTY) || ConsumableTypeObject.stringValue().equals(OWL.OBJECTPROPERTY) || RepTypeObject.stringValue().equals(RDF.PROPERTY))
{
if (ConsumableTypeObject.stringValue().equals(OWL.CLASS) || ConsumableTypeObject.stringValue().equals(RDFS.CLASS))
{
isConflict=true;
//_mConflictingStatements.add(s);
}
else
{
}
}
else
{
if( !(RepTypeObject.stringValue().equals(OWL.DATATYPEPROPERTY) || ConsumableTypeObject.stringValue().equals(OWL.OBJECTPROPERTY) || RepTypeObject.stringValue().equals(RDF.PROPERTY) || ConsumableTypeObject.stringValue().equals(OWL.CLASS) || ConsumableTypeObject.stringValue().equals(RDFS.CLASS)) )
{
if(RepTypeObject.stringValue()!=ConsumableTypeObject.stringValue())
{
isConflict=true;
}
}
}
System.out.println("2.2");
if(!isConflict)
{
addStatementsInRepository(uri.stringValue(),c_import);
}
} // LABEL-TYPE
}
else // No URI Conflict
addStatementsInRepository(uri.stringValue(),c_import);
System.out.println("3");
}
显示的错误如下:
11:13:24.405 ERROR - error while importing Sesame data:
java.util.ConcurrentModificationException: null
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859) ~[na:1.7.0_71]
at java.util.ArrayList$Itr.next(ArrayList.java:831) ~[na:1.7.0_71]
at org.apache.marmotta.platform.core.services.importer.rdf.RDFImporterImpl.importData2(RDFImporterImpl.java:433) [ulysses-core-1.0-alpha-2.jar:1.0-alpha-2]
如何解决?