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 プラグイン プロジェクトから sparql クエリを実行すると (別の Eclipse ランタイムでプラグインを実行すると)、機能しません。例外すらありません。デバッガーは奇妙なことをするだけです。これが機能しないコードは次のとおりです (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

Web でいくつかの調査を行った結果、Jena Wrapper プラグイン プロジェクトの依存関係に javax.xml バンドルを追加する必要があることがわかりました。今では正常に動作します。

于 2015-03-13T16:32:42.337 に答える