在OS X上使用Java 7和neo4j

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

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

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

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

 JAVA_HOME: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

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

 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java 

所以我尝试了这个,猜测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. 

那不好。

我搜索并发现了这篇文章 ,并根据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 } 

并再次尝试:

 $ 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. 

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

 $ 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 

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

 $ cd /Library/ $ sudo ln -s Internet\ Plug-Ins/ Internet-Plug-Ins $ export JAVA_HOME=/Library/Internet-Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 

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

您必须在Max OS上安装java JDK 1.7.x然后再安装

运行此命令以查看最新的Java JDK在哪里。

$ / usr / libexec / java_home -V

 1.7.0_45, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home 1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

这个案例我的最新版本是1.7.0_45

$ export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.7.0_45.jdk / Contents / Home

$ bin / neo4j开始

这个对我有用。