我正在尝试从 Eclipse 插件中使用 Jena 库。
如果我正常使用它,我可以编写如下代码:
public static void main(String[] args) {
Query query = QueryFactory.create("SELECT * {} LIMIT 10");
// provider.disconnect(file);
QueryExecution qexec = QueryExecutionFactory.sparqlService(
"http://dbpedia.org/sparql", query);
switch (query.getQueryType()) {
case (Query.QueryTypeSelect): {
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results);
break;
}
default:
return;
}
}
但是,当我使用相同的代码从 Eclipse 插件项目(我在另一个 Eclipse 运行时运行插件)执行 sparql 查询时,它不起作用。甚至没有例外。调试器只是做一些奇怪的事情。这是它不起作用的代码(它是 ILaunchShortcut 实现中的一个方法):
public void launch(IFile file) {
MessageConsoleStream out = findConsole(CONSOLE_NAME).newMessageStream();
try {
provider.connect(file);
IDocument document = provider.getDocument(file);
String queryString = document.get();
provider.disconnect(file);
out.println(queryString);
Query query = QueryFactory.create(queryString);
// provider.disconnect(file);
QueryExecution qexec = QueryExecutionFactory.sparqlService(
"http://dbpedia.org/sparql", query);
switch (query.getQueryType()) {
case (Query.QueryTypeSelect): {
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(out, results);
break;
}
default:
return;
}
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在声明Query query = QueryFactory.create(queryString);
中,调试器进入“EventTable.class”类并做一些奇怪的事情。然后以“org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine”循环结束。我不知道为什么以及发生了什么。
我刚刚发现正在进行某种错误处理。错误说:“parsers.FactoryConfigurationError:无法创建类 javax.xml.parsers.DocumentBuilderFactory 的提供程序”