Search code examples
javaorientdbtinkerpop

Orientdb: Create new Graph database


I'm trying to create a new instance of OrientGraph database, as follows:

OrientGraph graph = new OrientGraph("local:C:/temp/graph/db");
graph.create(); //BUT no create method!!

anyhow, while sticking with the manual and do it with ODatabaseDocumentTx like:

db = new ODatabaseDocumentTx("plocal:c:/orientdb/db");
db.create();
....
db.shutdown();

then I want to get a session like:

OrientGraphFactory factory = new OrientGraphFactory("plocal:c:/orientdb/db", "admin", "admin");
OrientGraphNoTx g = factory.getNoTx();
try
{

}
finally
{
    g.shutdown();
}

I got the following exception:

java.lang.IncompatibleClassChangeError: Expected static method     com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.checkForGraphSchema(Lcom/orientechnologies/orient/core/db/document/ODatabaseDocumentTx;)

How Can I create a new graph database???

Thank you.


Solution

  • First, you should not use the "local" engine anymore, it is deprecated (your first example). Secondly, the way an OrientGraph must be created is clearly documented, see http://www.orientechnologies.com/docs/last/orientdb.wiki/Graph-Factory.html

    The complete example which should work:

    @Test
    public void testNoTx() {
        // start with a non existing database
        final OrientGraphFactory factory = new OrientGraphFactory(
            "plocal:" + DB_DIR, "admin", "admin");
        assertFalse(factory.exists());        
        try {
            OrientGraphNoTx g = factory.getNoTx();
            // database is auto created
            assertFalse(g.isClosed());
            assertFalse(g.isRequireTransaction());
        } finally {
            // this also closes the OrientGraph instances created by the factory
            // Note that OrientGraphFactory does not implement Closeable
            factory.close();
        }
    }
    

    Finally, your reported error indicates a set of inconsistent jar files. You should:

    Needed dependencies:

    - com.orientechnologies:orientdb-graphdb:jar:2.0-M2:compile
      +- com.orientechnologies:orientdb-core:jar:2.0-M2:compile
      |  +- org.xerial.snappy:snappy-java:jar:1.1.0.1:compile
      |  +- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-  lru:jar:1.4:compile
      |  +- net.java.dev.jna:jna:jar:4.0.0:compile
      |  \- net.java.dev.jna:jna-platform:jar:4.0.0:compile
      \- com.tinkerpop.blueprints:blueprints-core:jar:2.6.0:compile
         +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.3:compile
         |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.3:compile
         |  \- com.fasterxml.jackson.core:jackson-core:jar:2.2.3:compile
         +- com.carrotsearch:hppc:jar:0.6.0:compile
         \- commons-configuration:commons-configuration:jar:1.6:compile
            +- commons-collections:commons-collections:jar:3.2.1:compile
            +- commons-lang:commons-lang:jar:2.4:compile
            +- commons-digester:commons-digester:jar:1.8:compile
            |  \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
            \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile
    

    UPDATE:

    For a complete example, see https://github.com/rmuller/graphdb-playground (under 'orientdb-embedded-graph')