在OS X上使用Java 7和neo4j

phi*_*ilh 6 java macos neo4j

在系统首选项中将Java升级到7u45之后,Neo4j仍然警告我使用了错误的版本:

WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
Run Code Online (Sandbox Code Playgroud)

我想使用neo4j v2,它不支持Java 6,所以我需要解决这个问题.

phi*_*ilh 9

我启动了一个neo4j 1.9.4服务器,并运行neo4j info.输出包括这一行:

JAVA_HOME:         /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

显然,我需要设置JAVA_HOME.怎么设置它?/usr/libexec/java_home返回同一目录.JavaVirtualMachines目录不包含任何其他子文件夹.所以我尝试了探索java控制面板(从系统首选项访问).在"Java"选项卡下,单击"查看",并给出7u45的路径:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
Run Code Online (Sandbox Code Playgroud)

所以我尝试了这个,猜测Contents/Home目录是同构的:

$ 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.
Run Code Online (Sandbox Code Playgroud)

那不好.

我搜索并找到了这篇文章,并根据我编辑的Lasse的建议/usr/local/Cellar/neo4j/1.9.4/libexec/bin/utils.我添加了两行:

 # 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
 }
Run Code Online (Sandbox Code Playgroud)

并再次尝试:

$ 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.
Run Code Online (Sandbox Code Playgroud)

看起来路径中的空间令人困惑.我试图逃避它,但我的第一种方法失败了:

$ 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
Run Code Online (Sandbox Code Playgroud)

然后我决定简单(不一定很好)的解决方案只是制作一个符号链接:

$ cd /Library/
$ sudo ln -s Internet\ Plug-Ins/ Internet-Plug-Ins
$ export JAVA_HOME=/Library/Internet-Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Run Code Online (Sandbox Code Playgroud)

此时neo4j start运行正常; 我设法升级到v2.0.0-M6,它仍然有效.

  • 您可以尝试下载此文件并将其放入bin目录,然后尝试将JAVA_HOME设置为带有空格的路径 - https://raw.github.com/mneedham/neo4j/54f47c41164d9c317aefefc2a37149bac283adda/packaging/standalone/src/main/distribution /壳脚本/斌/ Neo4j的.然后让我知道它是否能够正确启动. (2认同)