java - 无法从 Java 应用程序打开 orientdb 数据库

标签 java sql database nosql orientdb

当我使用控制台时一切正常,但是当我尝试从 Java 应用程序打开数据库时出现此错误

WARNING: Sun Unsafe direct  memory implementation is going to be used, this                    implementation is not stable so please use JNA version instead.
Exception in thread "main" com.orientechnologies.common.exception.OException: Error on creation of shared resource
at com.orientechnologies.common.concur.resource.OSharedContainerImpl.getResource(OSharedContainerImpl.java:55)
at com.orientechnologies.orient.core.metadata.OMetadataDefault.init(OMetadataDefault.java:110)
at com.orientechnologies.orient.core.metadata.OMetadataDefault.load(OMetadataDefault.java:68)
at com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.open(ODatabaseRecordAbstract.java:132)
at com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.open(ODatabaseWrapperAbstract.java:53)
at ru.sersem.bugsaccounting.RegBugs.openDataBase(RegBugs.java:36)
at com.library.test.Test.main(Test.java:5)
Caused by: com.orientechnologies.orient.core.exception.ORecordNotFoundException: The record with id '#0:1' not found
at com.orientechnologies.orient.core.record.ORecordAbstract.reload(ORecordAbstract.java:294)
at com.orientechnologies.orient.core.record.impl.ODocument.reload(ODocument.java:374)
at com.orientechnologies.orient.core.type.ODocumentWrapper.reload(ODocumentWrapper.java:87)
at com.orientechnologies.orient.core.type.ODocumentWrapperNoClass.reload(ODocumentWrapperNoClass.java:69)
at com.orientechnologies.orient.core.metadata.schema.OSchemaShared$16.call(OSchemaShared.java:605)
at com.orientechnologies.orient.core.storage.OStorageAbstract.callInLock(OStorageAbstract.java:185)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage.callInLock(OLocalPaginatedStorage.java:1322)
at com.orientechnologies.orient.core.metadata.schema.OSchemaShared.load(OSchemaShared.java:600)
at com.orientechnologies.orient.core.metadata.OMetadataDefault$1.call(OMetadataDefault.java:114)
at com.orientechnologies.orient.core.metadata.OMetadataDefault$1.call(OMetadataDefault.java:110)
at com.orientechnologies.common.concur.resource.OSharedContainerImpl.getResource(OSharedContainerImpl.java:53)
... 6 more
Caused by: com.orientechnologies.orient.core.exception.ODatabaseException: Error on retrieving record #0:1 (cluster: internal)
at com.orientechnologies.orient.core.db.raw.ODatabaseRaw.read(ODatabaseRaw.java:250)
at com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.executeReadRecord(ODatabaseRecordAbstract.java:706)
at com.orientechnologies.orient.core.tx.OTransactionNoTx.loadRecord(OTransactionNoTx.java:63)
at com.orientechnologies.orient.core.db.record.ODatabaseRecordTx.reload(ODatabaseRecordTx.java:232)
at com.orientechnologies.orient.core.db.record.ODatabaseRecordTx.reload(ODatabaseRecordTx.java:38)
at com.orientechnologies.orient.core.record.ORecordAbstract.reload(ORecordAbstract.java:287)
... 16 more
Caused by: java.lang.NoClassDefFoundError: org/iq80/snappy/Snappy
at com.orientechnologies.orient.core.serialization.compression.impl.OSnappyCompression.uncompress(OSnappyCompression.java:39)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.readRecord(OPaginatedCluster.java:574)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage.readRecord(OLocalPaginatedStorage.java:1160)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage.readRecord(OLocalPaginatedStorage.java:1140)
at com.orientechnologies.orient.core.db.raw.ODatabaseRaw.read(ODatabaseRaw.java:244)
... 21 more
Caused by: java.lang.ClassNotFoundException: org.iq80.snappy.Snappy
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 26 more

我应该配置 orientdb-server-config.xml 还是其他? 这是我用来连接的代码

public static void openDataBase() { 
    ODatabaseDocumentTx db = new ODatabaseDocumentTx("plocal:/database/bugsac");
    db.open("admin", "admin");
    try {
        System.out.println(db.getName());
    } finally {
      db.close();
    }

错误发生在这里 db.open("admin", "admin"); 连接没有错误。你能猜出问题出在哪里吗?

最佳答案

错误很明显:

java.lang.ClassNotFoundException: org.iq80.snappy.Snappy

您是否在您的类路径中包含了 snappy*.jar?

关于java - 无法从 Java 应用程序打开 orientdb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21620622/

相关文章:

sql - 将查询分组为组和子组

php - 如何检查一张表的id到另一张表?

sql - Postgres JOIN 实现

javascript - 无法从 Web 应用程序的 MongoDB 数据库获取数据

android - SQLite 数据库不创建 android

java - 从 Java Swing 组件中检索对象

java - 如何将嵌套的 Scala 集合转换为嵌套的 Java 集合

java - 如何为具有 Java Spring 安全性的用户授予权限

Java向文本文件的特定部分添加行

php - 如何将查询结果从多列转换为两列?