Skip to content

Instantly share code, notes, and snippets.

@fbiville
Last active October 23, 2016 17:04
Show Gist options
  • Select an option

  • Save fbiville/7d2cddac40557c33b8b0fbae4400af1c to your computer and use it in GitHub Desktop.

Select an option

Save fbiville/7d2cddac40557c33b8b0fbae4400af1c to your computer and use it in GitHub Desktop.
Liquigraph 2.0.0 with Neo4j 3.x in embedded and file mode (spoiler alert: it won't work)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.biville.florent</groupId>
<artifactId>test-liquigraph-neo4j3-liquigraph2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test-liquigraph-neo4j3-liquigraph2</name>
<url>http://maven.apache.org</url>
<properties>
<encoding>UTF-8</encoding>
<java.version>1.8</java.version>
<project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<neo4j.version>3.0.6</neo4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.liquigraph</groupId>
<artifactId>liquigraph-core</artifactId>
<version>2.0.0</version>
</dependency>
<!-- in memory support -->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>${neo4j.version}</version>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-io</artifactId>
<version>${neo4j.version}</version>
<type>test-jar</type>
</dependency>
</dependencies>
</project>
package net.biville.florent;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.graphdb.Result;
class GraphQueries {
private final GraphDatabaseService graphDb;
public GraphQueries(GraphDatabaseService graphDb) {
this.graphDb = graphDb;
}
public void countNodes(String label) {
try (Result result = graphDb.execute(String.format("MATCH (n:%s) RETURN COUNT(n) AS count", label));
ResourceIterator<Long> results = result.columnAs("count")) {
results.forEachRemaining((c) -> System.out.println(String.format("Number of nodes with label %s: %d", label, c)));
}
}
}
package net.biville.florent;
import org.liquigraph.core.api.Liquigraph;
import org.liquigraph.core.configuration.ConfigurationBuilder;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class FileDatabase {
public static void main(String[] args) throws Exception {
Path directory = Files.createTempDirectory("neo");
GraphDatabaseService graphDB = createEmbeddedDatabase(directory);
GraphQueries queries = new GraphQueries(graphDB);
queries.countNodes("Sentence");
new Liquigraph().runMigrations(
new ConfigurationBuilder()
.withUri("jdbc:neo4j:file:" + directory.toFile().getAbsolutePath())
.withMasterChangelogLocation("changelog.xml")
.withRunMode()
.build());
queries.countNodes("Sentence");
}
private static GraphDatabaseService createEmbeddedDatabase(Path directory) throws IOException {
return new GraphDatabaseFactory().newEmbeddedDatabase(directory.toFile());
}
}
Exception in thread "main" java.lang.NoSuchMethodError: org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(Ljava/lang/String;)Lorg/neo4j/graphdb/GraphDatabaseService;
at org.neo4j.jdbc.embedded.EmbeddedDatabases$Type$3$1.newDatabase(EmbeddedDatabases.java:67)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:183)
at org.neo4j.jdbc.embedded.EmbeddedDatabases$Type$3.create(EmbeddedDatabases.java:76)
at org.neo4j.jdbc.embedded.EmbeddedDatabases.createDatabase(EmbeddedDatabases.java:113)
at org.neo4j.jdbc.embedded.EmbeddedDatabases.createExecutor(EmbeddedDatabases.java:143)
at org.neo4j.jdbc.Driver.createExecutor(Driver.java:161)
at org.neo4j.jdbc.Neo4jConnection.createExecutor(Neo4jConnection.java:141)
at org.neo4j.jdbc.Neo4jConnection.<init>(Neo4jConnection.java:74)
at org.neo4j.jdbc.Connections$4.doCreate(Connections.java:82)
at org.neo4j.jdbc.Connections.create(Connections.java:97)
at org.neo4j.jdbc.Driver.connect(Driver.java:73)
at org.neo4j.jdbc.Driver.connect(Driver.java:37)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri$UriToConnectionFunction.apply(ConnectionConfigurationByUri.java:80)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri$UriToConnectionFunction.apply(ConnectionConfigurationByUri.java:74)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri.get(ConnectionConfigurationByUri.java:57)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri.get(ConnectionConfigurationByUri.java:29)
at org.liquigraph.core.io.GraphJdbcConnector.connect(GraphJdbcConnector.java:37)
at org.liquigraph.core.api.MigrationRunner$ConnectionSupplier.get(MigrationRunner.java:125)
at org.liquigraph.core.api.MigrationRunner$ConnectionSupplier.get(MigrationRunner.java:116)
at org.liquigraph.core.api.MigrationRunner.runMigrations(MigrationRunner.java:70)
at org.liquigraph.core.api.Liquigraph.runMigrations(Liquigraph.java:63)
at net.biville.florent.FileDatabase.main(FileDatabase.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
package net.biville.florent;
import org.liquigraph.core.api.Liquigraph;
import org.liquigraph.core.configuration.ConfigurationBuilder;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.kernel.impl.factory.GraphDatabaseFacade;
import org.neo4j.test.TestGraphDatabaseFactory;
public class InMemoryDatabase {
public static void main(String[] args) throws Exception {
GraphDatabaseService graphDB = createInMemoryDatabase();
GraphQueries queries = new GraphQueries(graphDB);
queries.countNodes("Sentence");
new Liquigraph().runMigrations(
new ConfigurationBuilder()
.withUri("jdbc:neo4j:mem:" + ((GraphDatabaseFacade) graphDB).getStoreDir())
.withMasterChangelogLocation("changelog.xml")
.withRunMode()
.build());
queries.countNodes("Sentence");
}
private static GraphDatabaseService createInMemoryDatabase() {
return new TestGraphDatabaseFactory().newImpermanentDatabase();
}
}
Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/cypher/javacompat/ExecutionEngine
at org.neo4j.jdbc.embedded.EmbeddedQueryExecutor.<init>(EmbeddedQueryExecutor.java:52)
at org.neo4j.jdbc.embedded.EmbeddedDatabases.createExecutor(EmbeddedDatabases.java:144)
at org.neo4j.jdbc.Driver.createExecutor(Driver.java:161)
at org.neo4j.jdbc.Neo4jConnection.createExecutor(Neo4jConnection.java:141)
at org.neo4j.jdbc.Neo4jConnection.<init>(Neo4jConnection.java:74)
at org.neo4j.jdbc.Connections$4.doCreate(Connections.java:82)
at org.neo4j.jdbc.Connections.create(Connections.java:97)
at org.neo4j.jdbc.Driver.connect(Driver.java:73)
at org.neo4j.jdbc.Driver.connect(Driver.java:37)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri$UriToConnectionFunction.apply(ConnectionConfigurationByUri.java:80)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri$UriToConnectionFunction.apply(ConnectionConfigurationByUri.java:74)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri.get(ConnectionConfigurationByUri.java:57)
at org.liquigraph.core.configuration.ConnectionConfigurationByUri.get(ConnectionConfigurationByUri.java:29)
at org.liquigraph.core.io.GraphJdbcConnector.connect(GraphJdbcConnector.java:37)
at org.liquigraph.core.api.MigrationRunner$ConnectionSupplier.get(MigrationRunner.java:125)
at org.liquigraph.core.api.MigrationRunner$ConnectionSupplier.get(MigrationRunner.java:116)
at org.liquigraph.core.api.MigrationRunner.runMigrations(MigrationRunner.java:70)
at org.liquigraph.core.api.Liquigraph.runMigrations(Liquigraph.java:63)
at net.biville.florent.InMemoryDatabase.main(InMemoryDatabase.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.neo4j.cypher.javacompat.ExecutionEngine
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 26 more
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment