0

我正在尝试从 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 的提供程序”

4

1 回答 1

0

在对网络进行一些研究后,我发现我必须将 javax.xml 包添加到我的 Jena Wrapper 插件项目的依赖项中。它现在工作正常。

于 2015-03-13T16:32:42.337 回答