我正在尝试安装Validator.nu服务器的本地版本,并且在尝试构建HTML Parser时仍然失败。
它说它无法找到我在.bashrc文件中设置的JAVA_HOME变量,并且在我提示时输入“echo $ JAVA_HOME”时显示正确
感谢赞赏
"hg" pull --update -R build https://bitbucket.org/validator/build/
Not trusting file build/.hg/hgrc from untrusted user dave, group dave
Not trusting file /home/dave/src/checker/build/.hg/hgrc from untrusted user dave, group dave
warning: bitbucket.org certificate with fingerprint 81:2b:08:90:dc:d3:71:ee:e0:7c:b4:75:ce:9b:6c:48:94:56:a1:fe not verified (check hostfingerprints or web.cacerts config setting)
pulling from https://bitbucket.org/validator/build/
warning: bitbucket.org certificate with fingerprint 81:2b:08:90:dc:d3:71:ee:e0:7c:b4:75:ce:9b:6c:48:94:56:a1:fe not verified (check hostfingerprints or web.cacerts config setting)
searching for changes
no changes found
Error: The JAVA_HOME environment variable is not set.
Set the JAVA_HOME environment variable to the pathname of the directory where your JDK is installed.
答案 0 :(得分:3)
而不是:
$ sudo python build/build.py all
尝试:
$ sudo -E python build/build.py all
出于安全原因,sudo命令会重置环境(因此即使导出了python进程,JAVA_HOME也会被删除)。 “sudo -E”将保护环境。
答案 1 :(得分:2)
我假设(来自标签)你使用ubuntu。
列出系统中已安装的javas的版本:
dave@ubuntu:~$ update-java-alternatives --list
java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
注意,如果在〜/ .bashrc中设置JAVA_HOME,它将仅在终端会话中设置。 除非您导出它,否则它将仅为您当前的shell进程设置(而不是像mercurial这样的子进程)。
在.bashrc中添加行:
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk"
打开一个新终端并测试它:
$JAVA_HOME/bin/java -version && echo java seen by bash
bash -c '$JAVA_HOME/bin/java -version && echo java seen by bash subprocesses'
如果要为所有进程设置环境(不仅仅是从终端手动启动),您可以:
dave@ubuntu:~$ sudo $EDITOR /etc/environment
答案 2 :(得分:2)
在过去4天解决了这个问题后,我设法让我的本地Ubuntu VM上运行了validator.nu服务器,所以我想我会更新这个帖子以防其他人遇到同样的问题。
我仍然不能100%确定JAVA_HOME变量的原始问题来自哪里,但我怀疑(虽然我不是这方面的专家),这与我使用sudo运行的方式有关python build。
我最初是按照http://about.validator.nu/#src上的说明操作,但是使用
$ sudo python build/build.py all
这是因为部分构建需要正确的权限才能工作。
这是我从Ubuntu 11的全新安装开始的逐步过程。
当我为构建脚本设置内部网络时,我将需要再次执行此操作,因此如果我错过了任何内容,我将编辑此内容。
希望这可以挽救另一个人的头痛和失去的日子!