【问题标题】:HypergraphDB Netbeans settingsHypergraphDB Netbeans 设置
【发布时间】:2012-10-21 19:56:56
【问题描述】:

我想用 Java 中的 HypergraphDB 做一些事情。我对这种语言和 IDE Netbeans 不是很熟悉。 我按照描述 HGDB 安装的步骤进行操作:Link to tutorial 现在我想用 Java 写一个例子(使用 NetbeansIDE)。

所以我创建了新项目,为下载的库添加了引用。好的,现在我可以使用 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 选项提供。我使用库的完整路径而不是系统变量。 我在 Windows7 中的操作系统。我不确定使用斜杠、反斜杠或双反斜杠作为路径分隔符。?

所以一个简单的问题是:如何设置 IDE 以使用 HypergraphDB?

感谢您的建议!

【问题讨论】:

  • 你是否添加了所有三个必需的库:hgbdbje-1.3.jar、hgdb-1.3.jar、je-5.0.34.jar??

标签: java netbeans nosql berkeley-db


【解决方案1】:

从堆栈跟踪来看,您使用的是最新版本的 HyperGraphDB。在该版本中,未使用本机 API。相反,它只是 Java 库。您必须在运行时类路径中包含 BerkeleyDB Java 版 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

【讨论】:

    【解决方案2】:

    我有同样的问题。我通过修复 HyperGraphDB 应用程序所依赖的库的顺序来修复它(偶然)。库 je-[version].jar 必须高于(因此要在之前引用)db-[version].jar

    【讨论】:

    • 高度怀疑这可能是一个问题,如果包含的库的顺序对编译错误有任何影响,我无法想象拥有 40-80 个库的项目会变得多么混乱!
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多