JAVA_HOME环境变量未设置 Validator.nu HTML解析器

4
我正在尝试安装Validator.nu服务器的本地版本,但一直无法构建HTML解析器。

它说找不到JAVA_HOME变量,而我已经在我的.bashrc文件中设置了它,并在提示符下键入“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.

https://dev59.com/vm865IYBdhLWcg3wkfcW - Michael
谢谢@Mikaveli,我已经尝试了脚本和软件中心,并且已经拥有最新版本。 - Dave Taylor
你的环境变量指向_Open_ JDK。有可能是你的软件正在寻找的某些内容不存在或不同。如果你已经安装了Sun / Oracle版本,请将JAVA_HOME指向该版本进行快速测试。 - Michael
你是否使用sudo来运行安装脚本?如果运行“sudo echo $JAVA_HOME”,会发生什么? - Ethan Shepherd
sudo echo $JAVA_HOME 似乎与 echo $JAVA_HOME 相同。 - Dave Taylor
显示剩余8条评论
3个回答

3

改为:

$ sudo python build/build.py all

尝试:

$ sudo -E python build/build.py all

出于安全原因,sudo命令会重置环境变量(因此即使已导出,也会在python进程中清除JAVA_HOME)。"sudo -E"将保留环境变量。


啊...那就说得通了。每天都可以学到新东西!干杯 - Dave Taylor

2
我猜您使用的是Ubuntu操作系统。
列出您系统中安装的Java版本:
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

感谢你提供这些信息,Michal。由于这个,我现在对Ubuntu/Linux系统的内部运作有了更深入的了解,今天我甚至成功地启动了validator.nu服务器。但是很遗憾,我仍然不确定之前为什么它不能正常工作。我准备把我所采取的步骤写成一个答案。 - Dave Taylor

2
在经过了最近4天的努力后,我已经成功地在我的本地Ubuntu虚拟机上运行了validator.nu服务器,因此我想更新一下这个帖子,以防其他人遇到相同的问题。
我仍然不确定JAVA_HOME变量的初始问题是从哪里来的,但我怀疑(尽管我不是专家)它与我使用sudo运行python构建的方式有关。
起初,我按照http://about.validator.nu/#src上的说明进行操作。
$ sudo python build/build.py all

这是因为构建的一部分需要正确的权限才能工作。
以下是我从干净安装的Ubuntu 11开始的逐步过程:
  • 安装Ubuntu 11
  • 打开终端
  • sudo /bin/bash <----------- 我认为这是关键的一行
  • apt-get install mercurial
  • apt-get install subversion
  • apt-get install openjdk-6-jre
  • apt-get install openjdk-6-jdk
  • export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
  • 按照http://about.validator.nu/#src的剩余说明进行操作
当我为我们的构建脚本设置内部网络时,我将需要再次执行此操作,所以如果我漏掉了什么,我将编辑它。
希望这可以避免其他人的头痛和失去的日子!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接