以下代码在Jena 2.10.0中有效,但在Jena 2.10.1中失败:
model = FileManager.get().loadModel(uri, base, "RDF/XML");
堆栈跟踪为:
com.hp.hpl.jena.n3.turtle.ParserTurtle.parse(ParserTurtle.java:67),
com.hp.hpl.jena.n3.turtle.TurtleReader.readWorker(TurtleReader.java:33),
com.hp.hpl.jena.n3.JenaReaderBase.readImpl(JenaReaderBase.java:116),
com.hp.hpl.jena.n3.JenaReaderBase.read(JenaReaderBase.java:81),
com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:274),
com.hp.hpl.jena.util.LocationMapper.initFromPath(LocationMapper.java:158),
com.hp.hpl.jena.util.LocationMapper.get(LocationMapper.java:71),
com.hp.hpl.jena.util.FileManager.makeGlobal(FileManager.java:122),
com.hp.hpl.jena.util.FileManager.get(FileManager.java:88),
...
据我所调试,在某个静态块中,ParserTurtle类的初始化中有一个NPE。但是,确切的位置没有出现在堆栈跟踪中,我无法通过自己初始化此类来重现它。
修复是最好的,但是对于在Jena 2.10.1中如何使用FileManager的任何提示,我将不胜感激。我需要FileManager来加载location-mapping.n3文件。
点
这与https://stackoverflow.com/questions/16196069/jena-filemanager-readmodel-cannot-find-file(我会对此发表评论,但我的信誉不足)
经过进一步调试后,发现在2.10.0中有效但在2.10.1中无效的实际代码与初始化LocationMapper有关,请参见http://issues.apache.org/jira/browse/JENA-505。我在那里附了一个说明问题的最小示例。
实际错误仅通过警告消息表示:
2013.08.09 14:21:00 [main] LocationMapper WARN: Error in configuration file: null
但是如果以后尝试加载在位置映射器中映射的文件,则可能会出现类似于]的错误>
com.hp.hpl.jena.shared.NotFoundException: Not found: (...)
这就是为什么我将此问题与16196069相关。
我通过加载IRI而不是URI来解决它。以下示例: