【问题标题】:"Error: JAVA_HOME is not defined correctly." in building Jikes rvm“错误:未正确定义 JAVA_HOME。”在构建 Jikes rvm
【发布时间】:2012-06-16 16:01:26
【问题描述】:

当我在 Ubuntu 上构建 Jikes RVM 时,我收到了这个错误。有什么想法吗?

bin/buildit localhost production
---> Config: production
/bin/bash --login -c  '/bin/bash --login -c  "   cd /home/jack/Programs/jikesrvm-3.1.2 &&  export JAVA_HOME=/opt/jdk1.6.0 &&   ant very-clean -Dhost.name=ia32-linux &&  ant check-components-properties -Dhost.name=ia32-linux -Dtarget.name=ia32-linux -Dcomponents.cache.dir=/home/jack/.buildit_components_cache  &&   ant -Dtarget.name=ia32-linux -Dconfig.name=production -Dhg.revision= -Dhost.name=ia32-linux -Dcomponents.cache.dir=/home/jack/.buildit_components_cache "' 
Error: JAVA_HOME is not defined correctly.
  We cannot execute /opt/jdk1.6.0/bin/java
Wed Jun 13 12:23:37 EDT 2012
===================== Summary =====================
Local   : /home/jack/Programs/jikesrvm-3.1.2
Build   : ubuntu:/home/jack/Programs/jikesrvm-3.1.2
Target  : ubuntu:/home/jack/Programs/jikesrvm-3.1.2
Start   : Wed Jun 13 12:23:37 EDT 2012
Config  : production [FAILED Wed Jun 13 12:23:37 EDT 2012]
===================================================

操作系统:

Linux ubuntu 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux

环境变量: 路径

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-sun-1.6.0.22/bin<

JAVA_HOME

/usr/lib/jvm/java-6-sun-1.6.0.22

我检查了JAVA_HOME/bin 目录中的java,它可以工作。 不管我怎么改环境变量,错误一直在抱怨

“我们无法执行 /opt/jdk1.6.0/bin/java”。

看来我没有修改正确的“位置”。

【问题讨论】:

    标签: java jvm environment-variables java-home jikes


    【解决方案1】:

    它是 JRE,但不是 JDK。安装JDK并让JAVA_HOME指向它。

    【讨论】:

    • 你能举个例子来说明如何做到这一点吗?
    • 你的意思是一个如何安装JDK的例子?只需从存储库中获取它。 JAVA_HOME 可以作为变量导出到 shell。
    【解决方案2】:

    运行这个命令:

    find . -exec grep "jdk1.6.0" {} \;
    

    找出哪个文件将 JAVA_HOME 设置为该路径。

    【讨论】:

    • 嗨洛基,按照你的命令,我得到了这个:global.javahome.ia32-linux=/opt/jdk1.6.0 global.javahome.x86_64-linux=/opt/jdk1.6.0 但是什么是他们?我怎样才能改变它们?谢谢!
    • 对不起,我猜你应该添加 -l 选项,这样你就可以看到它定义的文件: find 。 -exec grep -l "jdk1.6.0" {} \;这将打印文件名,然后编辑该文件。
    • 我找到了他们。它们在 /bin/buildit.base_config 中。修改为真正的JAVA_HOME后,错误消失。谢谢!
    • 我面临一个类似的问题:stackoverflow.com/questions/29456149/… 似乎这个解决方案对我不起作用。你能看一下吗?
    【解决方案3】:

    在构建 jikes 时,您可以使用 ant 或您正在使用的命令构建它。 如果 JAVA_HOME 问题导致使用麻烦

    bin/buildit localhost production -j"path to your jvm directory"
    

    -这存在于“/usr/bin/jvm”中。

    另一种方法:有bin/buildit.base_config,其中特别提到了JAVA_HOME的路径。所以在“# Default JAVA_HOME values”下可以修改适当的位置,例如,

    global.javahome.ppc32-linux=/usr/lib/jvm/java-6-sun-1.6.0.26
    global.javahome.ppc64-linux=/usr/lib/jvm/java-6-sun-1.6.0.26
    global.javahome.ia32-linux=/usr/lib/jvm/java-6-sun-1.6.0.26
    global.javahome.x86_64-linux=/usr/lib/jvm/java-6-sun-1.6.0.26
    

    您可以选择要使用的。如果不熟悉您的架构,请修改所有内容,现在您可以构建,而不必担心明确提及您的 java 路径。 更多详细信息请查看 this blog

    我还写了一篇小文章,如何start to fiddle with Jikes

    【讨论】:

    • @jackWM:目前在使用 openjdk 7 构建它时 jikes 中存在错误,并且它在版本 6 上运行良好,所以使用版本 6。
    【解决方案4】:

    由于多种原因,您可能会收到此错误。要快速解决此问题,请按照以下步骤操作,

    首先找到java位置。要获取已安装 Java 平台的列表,请从终端运行以下命令:

    $ sudo update-alternatives --config java
    

    现在设置 JAVA_HOME 和 PATH,

    $ export JAVA_HOME=<java_home>
    
    $ export PATH=$JAVA_HOME/jre/bin:$PATH
    

    创建符号链接

    $ sudo ln -s <java_home>/jre <java_symlink_path>
    

    当我们以你的情况为例:

    $ sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.22/jre /opt/jdk1.6.0
    

    上述命令将创建系统试图在您的问题中查找的符号链接位置。

    最后试试你的应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 2015-02-03
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多