-jarオプションを付けたとき、-cp(-classpath)オプションは無視される
http://neo4j.org/のneo4j-shell-1.0.jarを利用するには、Wikiによると以下のように書けばいいとある。
$ java -jar neo4j-shell-1.0.jar -path test_db ERROR (-v for expanded information): Neo4j not found on the classpath Example arguments for remote: -port 1337 -port 1337 -name shell ...or no arguments Example arguments for local: -path /path/to/db -path /path/to/db -readonly
Errorの理由は、CLASSPATHにneo4jのライブラリが無いかららしい。
$ java -jar neo4j-shell-1.0.jar -path test_db \ > -cp .:../libs/neo4j/neo4j-kernel-1.0/neo4j-kernel-1.0.jar:../libs/neo4j/neo4j-kernel-1.0/geronimo-jta_1.1_spec-1.1.1.jar ERROR (-v for expanded information): Neo4j not found on the classpath Example arguments for remote: -port 1337 -port 1337 -name shell ...or no arguments Example arguments for local: -path /path/to/db -path /path/to/db -readonly
駄目だった。
man java (Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle)によると、-jarのオプションを使うと、-cp(-classpath)オプションは無視されるようだ。
このオプションを使用すると、指定した JAR ファイルがすべてのユーザークラスのソースになり、ユーザークラスパスのほかの設定は無視されます。
そこで、代わりに-Xbootclasspath/a:オプションが使える。
ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをセミコロンで区切って指定します。パスはデフォルトのブートストラップクラスパスの後ろに追加されます。
$ java -jar neo4j-shell-1.0.jar -path test_db \ > -Xbootclasspath/a:.:../libs/neo4j/neo4j-kernel-1.0/neo4j-kernel-1.0.jar:../libs/neo4j/neo4j-kernel-1.0/geronimo-jta_1.1_spec-1.1.1.jar NOTE: Connected to local neo4j service at 'test_db' Welcome to the Neo4j Shell! Enter 'help' for a list of commands Want bash-like features? throw in jLine (http://jline.sourceforge.net) on the classpath neo4j-sh (0)$
これでneo4jのシェルが使えるようになった。