JavaでHypergraphDBを使って何かしたいです。私はこの言語と IDE Netbeans にあまり詳しくありません。HGDB のインストールを説明する手順に従いました。チュートリアルへのリンク ここで、Java で (NetbeansIDE を使用して) 例を書きたいと思います。
そこで、新しいプロジェクトを作成し、ダウンロードしたライブラリへの参照を追加しました。OK、HGDB でパッケージをインポートできるようになりました。私のmain
メソッドにあるのは だけですHyperGraph HG = new HyperGraph(dbLocation);
。このコードはコンパイルされます。ただし、次の実行時エラーが発生します。
run:
checkpoint kbytes:0
checkpoint minutes:0
java.lang.IllegalStateException: There is 1 existing transaction opened against the Environment.
Aborting open transactions ...
aborting <Transaction id="28">
at com.sleepycat.je.Environment.close(Environment.java:383)
at org.hypergraphdb.storage.bje.BJEStorageImplementation.shutdown(BJEStorageImplementation.java:178)
at org.hypergraphdb.HGStore.close(HGStore.java:355)
at org.hypergraphdb.HyperGraph.open(HyperGraph.java:392)
at org.hypergraphdb.HyperGraph.open(HyperGraph.java:213)
at org.hypergraphdb.HyperGraph.<init>(HyperGraph.java:200)
at hgdbtest.HgdbTest.main(HgdbTest.java:16)
Exception in thread "main" org.hypergraphdb.HGException: java.lang.NoSuchMethodError: org.hypergraphdb.storage.bje.LinkBinding.objectToEntry(Ljava/lang/Object;Lcom/sleepycat/je/DatabaseEntry;)V
at org.hypergraphdb.HyperGraph.open(HyperGraph.java:395)
at org.hypergraphdb.HyperGraph.open(HyperGraph.java:213)
at org.hypergraphdb.HyperGraph.<init>(HyperGraph.java:200)
at hgdbtest.HgdbTest.main(HgdbTest.java:16)
Caused by: java.lang.NoSuchMethodError: org.hypergraphdb.storage.bje.LinkBinding.objectToEntry(Ljava/lang/Object;Lcom/sleepycat/je/DatabaseEntry;)V
at org.hypergraphdb.storage.bje.BJEStorageImplementation.store(BJEStorageImplementation.java:234)
at org.hypergraphdb.HGStore.store(HGStore.java:119)
at org.hypergraphdb.HGTypeSystem.addPrimitiveTypeToStore(HGTypeSystem.java:185)
at org.hypergraphdb.HGTypeSystem.bootstrap(HGTypeSystem.java:234)
at org.hypergraphdb.HyperGraph.open(HyperGraph.java:355)
... 3 more
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)
BerkeleyDB のネイティブ API が原因だと思います。
チュートリアルによると、プロジェクト オプションでは、-Djava.library.path=$HGDB_ROOT/lib/native/$PLATFORM
実行カードの引数を VM オプションとして指定します。システム変数の代わりに、ライブラリへのフルパスを使用します。私のOSはWindows7です。スラッシュ、バックスラッシュ、または二重バックスラッシュをパス区切りとして使用する方法がわかりません。
簡単な質問は、HypergraphDB を使用するために IDE をどのように設定すればよいですか?
アドバイスありがとうございます!