I'm getting an initialization error when I try to instantiate my graph in blueprints. Here's the code that I'm using to create a new graph:
String path = "conf/titan-cassandra-" + System.getProperty("env") + ".properties";
Graph graph = TitanFactory.open(path);
The system property is being set and the file exists. The error is being thrown in TitanFactory:
final Pattern p = Pattern.compile("(" +
Pattern.quote(GraphDatabaseConfiguration.STORAGE_NS.getName()) + "\\..*" + "(" +
Pattern.quote(GraphDatabaseConfiguration.STORAGE_DIRECTORY.getName()) + "|" +
Pattern.quote(GraphDatabaseConfiguration.STORAGE_CONF_FILE.getName()) + ")" + "|" +
Pattern.quote(GraphDatabaseConfiguration.INDEX_NS.getName()) + "\\..*" + "(" +
Pattern.quote(GraphDatabaseConfiguration.INDEX_DIRECTORY.getName()) + "|" +
Pattern.quote(GraphDatabaseConfiguration.INDEX_CONF_FILE.getName()) + ")" + ")");
Evaluating the expression GraphDatabaseConfiguration.STORAGE_NS yields 'null'. Why might this be?
Edit:
I'm including the stack trace as well
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.containsAny(Ljava/lang/String;[C)Z
at com.thinkaurelius.titan.diskstorage.configuration.ConfigElement.<init>(ConfigElement.java:26)
at com.thinkaurelius.titan.diskstorage.configuration.ConfigNamespace.<init>(ConfigNamespace.java:19)
at com.thinkaurelius.titan.diskstorage.configuration.ConfigNamespace.<init>(ConfigNamespace.java:24)
at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<clinit>(GraphDatabaseConfiguration.java:81)
at com.thinkaurelius.titan.core.TitanFactory.getLocalConfiguration(TitanFactory.java:240)
at com.thinkaurelius.titan.core.TitanFactory.getLocalConfiguration(TitanFactory.java:170)
at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:61)
at io.fama.api.service.GraphHolder.populateGraph(GraphHolder.java:28)
at io.fama.api.service.GraphHolder.graph(GraphHolder.java:21)
at io.fama.api.DebugTests.main(DebugTests.java:7)
When maven runs the test it throws a different error. This one looks like it's related to dependencies.
You didn't include the stack trace, but it is easily reproducible from the Gremlin shell. When running gremlin.sh
, it is usually best to run it from the $TITAN_HOME directory, not $TITAN_HOME/bin.
gremlin> graph = TitanFactory.open('conf/titan-cassandra-test.properties')
Backend shorthand unknown: conf/titan-cassandra-test.properties
Display stack trace? [yN] y
java.lang.IllegalArgumentException: Backend shorthand unknown: conf/titan-cassandra-test.properties
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:120)
at com.thinkaurelius.titan.core.TitanFactory.getLocalConfiguration(TitanFactory.java:175)
at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:61)
You need to watch out for the relative path. Most likely you are running the program from a different directory such that the relative path to the properties file does not resolve. Either run the program from the correct parent directory or use an absolute path.