Я пытаюсь получить доступ к базе данных графов Titan с помощью бэкэнда Cassandra, и все работает нормально со следующим кодом:
package ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy;
import ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.ITreeSerializer;
import ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.TitanSerializer;
public class ConnectionOkDriver {
public static void main(String[] args) {
ITreeSerializer serializer = TitanSerializer.getInstance();
if (serializer.dbConnected()) {
System.out.print("connection ok");
} else {
System.out.print("connection NOT ok");
}
}
}
Вывод (игнорируйте ошибку SLF4J):
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
connection ok
Теперь, если я запускаю следующий основной метод, я получаю ошибку Could not instantiate implementation
:
package ch.uzh.ifi.ddis.dm.twhc.input;
import ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.ITreeSerializer;
import ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.TitanSerializer;
public class ConnectionFailsDriver {
public static void main(String[] args) {
ITreeSerializer serializer = TitanSerializer.getInstance();
if (serializer.dbConnected()) {
System.out.print("connection ok");
} else {
System.out.print("connection NOT ok");
}
}
}
Вывод (снова игнорируйте ошибку SLF4J):
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.ExceptionInInitializerError
at ch.uzh.ifi.ddis.dm.twhc.input.ConnectionFailsDriver.main(ConnectionFailsDriver.java:9)
Caused by: java.lang.IllegalArgumentException: Could not instantiate implementation: com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager
at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:274)
at com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:227)
at com.thinkaurelius.titan.diskstorage.Backend.<init>(Backend.java:97)
at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:440)
at com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.<init>(StandardTitanGraph.java:67)
at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:40)
at ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.TitanSerializer.<init>(TitanSerializer.java:88)
at ch.uzh.ifi.ddis.dm.twhc.clusterhierarchy.persistence.TitanSerializer.<clinit>(TitanSerializer.java:78)
... 1 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:263)
... 8 more
Caused by: java.lang.NoSuchMethodError: com.netflix.astyanax.AstyanaxContext.getClient()Ljava/lang/Object;
at com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxStoreManager.<init>(AstyanaxStoreManager.java:166)
... 13 more
Как видите, классы ConnectionOkDriver
и ConnectionFailsDriver
отличаются только определением пакета. Однако эти два класса содержатся в разных модулях maven (2whc-clustering-impl зависит от 2whc-cluster-hierarchy-impl). Я хотел бы опубликовать изображение структуры моего проекта, но мне это не разрешено :(. Вот ссылка на изображение: https://dl.dropboxusercontent.com/u/48169775/project-structure.png
Ошибка возникает в конструкторе моего объекта TitanSerializer
в TitanFactory.open(conf)
. Это код:
private static final String DB_TYPE = "cassandra";
private static final String DB_IP = "127.0.0.1";
private TitanSerializer() {
Configuration conf = new BaseConfiguration();
conf.setProperty("storage.backend", DB_TYPE);
conf.setProperty("storage.hostname", DB_IP);
this.graph = TitanFactory.open(conf);
.
.
.
}
У вас есть идея, почему я получаю эту ошибку?
mvn dependency:tree -Dverbose
? - person lpiepiora   schedule 18.08.2013