即使JDK存在,也无法找到javac编译器

时间:2015-02-23 15:04:36

标签: java unix hadoop ant

我试图运行Apache Hive网络界面,所以我下载了最新版本的ant(Ant 1.9.4),当我执行命令生成hive.war时文件

 ANT_LIB=/opt/ant/lib bin/hive --service hwi

我收到以下错误:

 cp=/tmp/Jetty_0_0_0_0_9999_hive.hwi.0.10.0.war__hwi__ae9cmk/jsp
    cp=null
    work dir=/tmp/Jetty_0_0_0_0_9999_hive.hwi.0.10.0.war__hwi__ae9cmk/jsp
    extension dir=/usr/lib/jvm/jdk1.7.0_65/jre/lib/ext:/usr/java/packages/lib/ext
    srcDir=/tmp/Jetty_0_0_0_0_9999_hive.hwi.0.10.0.war__hwi__ae9cmk/jsp
   compilerTargetVM=1.5
   compilerSourceVM=1.5
    include=org/apache/jsp/index_jsp.java

15/02/23 09:56:59 ERROR compiler.Compiler: Error compiling file: /tmp/Jetty_0_0_0_0_9999_hive.hwi.0.10.0.war__hwi__ae9cmk/jsp//org/apache/jsp/index_jsp.java     [javac] warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds


15/02/23 09:56:59 ERROR mortbay.log: /hwi/
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/jdk1.7.0_65/jre"
    at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:130)
    at org.apache.tools.ant.taskdefs.Javac.findSupportedFileExtensions(Javac.java:984)
    at org.apache.tools.ant.taskdefs.Javac.scanDir(Javac.java:961)
    at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:932)
    at org.apache.jasper.compiler.AntCompiler.generateClass(AntCompiler.java:220)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)

我以root身份执行该代码。我的JAVA_HOME已正确设置在.bashrc

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_65
export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec
export HADOOP_CONF_DIR=/etc/hadoop/conf

export PATH=$PATH:$JAVA_HOME/bin

.bash_profile个文件:

的.bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_65
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export PATH

我想知道为什么Ant引用了javac "/usr/lib/jvm/jdk1.7.0_65/jre"。此外,这是我的JDK结构:

[root@ip-10-32-205-19 ~]# cd $JAVA_HOME
[root@ip-10-32-205-19 jdk1.7.0_65]# ls -l
total 19760
drwxr-xr-x. 2 root root     4096 Feb 23 04:09 bin
-r--r--r--. 1 root root     3339 Jun 17  2014 COPYRIGHT
drwxr-xr-x. 4 root root     4096 Jun 17  2014 db
drwxr-xr-x. 3 root root     4096 Jun 17  2014 include
drwxr-xr-x. 5 root root     4096 Jun 17  2014 jre
drwxr-xr-x. 5 root root     4096 Feb 23 04:09 lib
-r--r--r--. 1 root root       40 Jun 17  2014 LICENSE
drwxr-xr-x. 4 root root     4096 Jun 17  2014 man
-r--r--r--. 1 root root      114 Jun 17  2014 README.html
-rw-r--r--. 1 root root      499 Jun 17  2014 release
-rw-r--r--. 1 root root 19902785 Jun 17  2014 src.zip
-rw-r--r--. 1 root root   110114 Jun 16  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r--. 1 root root   173559 Jun 17  2014 THIRDPARTYLICENSEREADME.txt

显示我有JDK,而不仅是JRE已安装。我也看了类似的问题,但没有一个能解决我的问题。 Java64bits,此外我还为source.bashrc投放了.bash_profile

1 个答案:

答案 0 :(得分:0)

错误消息显示:

  

也许JAVA_HOME没有指向JDK。它目前设置为   " /usr/lib/jvm/jdk1.7.0_65/jre"

但是,你的.bashrc有:

  

导出JAVA_HOME = / usr / lib / jvm / jdk1.7.0_65

您可能需要在Bash shell中运行source ~/.bashrc以将JAVA_HOME重置为JDK安装的根目录。然后再次运行Ant。