I've built a new project using Spring data graph for Neo4J. I'm using Maven.
Everything works fine with embedded database, but when I'm trying to set a database on remote server using REST I'm getting:
java.lang.ClassNotFoundException: org.springframework.data.neo4j.rest.SpringRestGraphDatabase
I saw a post from about one year ago, but with no solution - at least not one that works for me... In this post they referred aspectJ which indeed I use.
Is anyone familiar with this? does anyone have a working configuration example?
I really tried a L-O-T of different configurations, based on different posts in different forums and guides. This is my last one - I'll just specify that I also have other POMs and all of them are grouped by a parent POM (this is a bug project).
This is the bean definition:
<!-- Neo4j configuration (creates Neo4jTemplate) -->
<datagraph:config graphDatabaseService="neo4JRestGraphDatabase" />
<!-- With this uncommented - it works great -->
<!--datagraph:config storeDirectory="data/graph.db" /-->
And this is the project's POM:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.vo.insight</groupId>
<artifactId>content-insights-model-processed</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>content-insights-model-processed</name>
<url>http://maven.apache.org</url>
<parent>
<artifactId>content-insights-parent</artifactId>
<groupId>com.vo.insight</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../content-insights-parent/pom.xml</relativePath>
</parent>
<properties>
<neo4j-rest-graphdb.version>2.0.0-M06</neo4j-rest-graphdb.version>
<neo4j.version>1.8.M06</neo4j.version>
</properties>
<dependencies>
<dependency>
<groupId>com.vo.insight</groupId>
<artifactId>content-insights-common</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Neo4J -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>3.0.0.BUILD-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-rest-graphdb</artifactId>
<version>${neo4j-rest-graphdb.version}</version>
<exclusions>
<exclusion>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
</exclusion>
<exclusion>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-lucene-index</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.neo4j.app</groupId>
<artifactId>neo4j-server</artifactId>
<version>${neo4j.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
</exclusion>
<exclusion>
<groupId>de.huxhorn.lilith</groupId>
<artifactId>de.huxhorn.lilith.3rdparty.rrd4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.main</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.fileinstall</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Do not remove this although we are not using Hibernate! this is needed
for Neo4J -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.1.4.RELEASE</version>
</dependency>
<!-- Cassandra Client -->
<dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector-core</artifactId>
</dependency>
<dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector-object-mapper</artifactId>
<version>3.0-04</version>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
</dependencies>
<build>
</build>
<!-- this profile is for ci build mode. to activate it use -Pci flag -->
<profiles>
<profile>
<id>ci</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
<aspectLibrary>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Thanks for your help!
Carmel
Eventualy, the problem was the definition of my neo4JRestGraphDatabase (which unfortunately I haven't pasted here...).
It was:
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.RestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" />
</bean>
Instead of:
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" />
</bean>
Now I have 'Connection Refused' problem, but this is another issue.
Regarding the dependencies, the dependencies that geceo mentioned above are indeed enough.
Thanks for anyone that tried to help!
Carmel