After upgrading Java to 7u45 in system preferences, Neo4j was still warning me about using the wrong version:
WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
I want to use neo4j v2, which doesn't support Java 6, so I needed to fix this.
I started a neo4j 1.9.4 server, and ran neo4j info
. The output included this line:
JAVA_HOME: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
So obviously, I needed to set JAVA_HOME. What to set it to? /usr/libexec/java_home
returns that same directory. The JavaVirtualMachines directory doesn't include any other subfolders. So I tried exploring the java control panel (accessed from system preferences). Under the "Java" tab, click "View", and the path for 7u45 is given:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
So I tried this, guessing that the Contents/Home
directories were isomorphic:
$ export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
$ neo4j start
WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -Dlog4j.configuration=file:conf/log4j.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Dneo4j.ext.udc.source=homebrew
Starting Neo4j Server...WARNING: not changing user
process [34808]... waiting for server to be ready. Failed to start within 120 seconds.
Neo4j Server may have failed to start, please check the logs.
That's no good.
I searched and found this post, and on Lasse's advice I edited /usr/local/Cellar/neo4j/1.9.4/libexec/bin/utils
. I added two lines:
# check if running Oracle JDK 7, warn if not
checkjvmcompatibility() {
+ echo $JAVACMD
+ $JAVACMD -version
$JAVACMD -version 2>&1 | egrep -q "Java HotSpot\\(TM\\) (64-Bit Server|Server|C
lient) VM"
if [ $? -eq 1 ]
then
echo "WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7."
else
$JAVACMD -version 2>&1 | egrep -q "java version \"1.7"
if [ $? -eq 1 ]
then
echo "WARNING! You are using an unsupported version of the Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7."
fi
fi
}
And tried again:
$ neo4j start
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
bin/utils: line 349: /Library/Internet: No such file or directory
WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
It looks like the space in the path is confusing. I tried to escape it, but my first approach failed:
$ export JAVA_HOME="'/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home'"
$ neo4j start
Error: JAVA_HOME is not defined correctly.
We cannot execute '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home'/bin/java
And then I decided that the simple (not necessarily nice) solution was just to make a symlink:
$ cd /Library/
$ sudo ln -s Internet\ Plug-Ins/ Internet-Plug-Ins
$ export JAVA_HOME=/Library/Internet-Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
At this point neo4j start
ran correctly; and I managed to upgrade to v2.0.0-M6 and it still worked.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With