代码之家  ›  专栏  ›  技术社区  ›  philh user2407038

在OS X上使用Java 7和neo4j

  •  6
  • philh user2407038  · 技术社区  · 13 年前

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

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

    我想使用neo4jv2,它不支持Java6,所以我需要解决这个问题。

    2 回复  |  直到 13 年前
        1
  •  9
  •   philh user2407038    13 年前

    我启动了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”选项卡下,单击“查看”,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.
    

    这不好。

    我搜索发现 this post ,根据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版本,它仍然有效。

        2
  •  1
  •   MobileDevMaster    12 年前

    您必须在Max操作系统上安装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_45jdk/Contents/HOME

    $bin/neo4j启动

    它对我有效。