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 のプロバイダーを作成できません」