1

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 をどのように設定すればよいですか?

アドバイスありがとうございます!

4

2 に答える 2

0

スタック トレースから判断すると、HyperGraphDB の最新バージョンを使用しています。そのバージョンでは、ネイティブ API は使用されません。むしろ、Java 専用のライブラリです。ランタイム クラスパスに BerkeleyDB Java Edition 5.0.34 jar を含める必要があります。Oracle http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.htmlまたは HyperGraphDB Maven リポジトリ ( http://hypergraphdb.org/maven/org/hypergraphdb/ ) から入手できます。 hgbdbje/1.2/hgbdbje-1.2.jar

于 2012-10-23T01:56:18.047 に答える
0

同じ問題がありました。HyperGraphDBアプリケーションが依存しているライブラリの順序を修正することで、(偶然に)修正しました。ライブラリje-[version].jarは ABOVE である必要があります (したがって、以前に参照する必要があります) db-[version].jar

于 2013-07-08T22:00:27.563 に答える