当我尝试使用此命令在Hadoop中编译我的程序时
bin/hadoop com.sun.tools.javac.Main WordCounter.java
Run Code Online (Sandbox Code Playgroud)
它说,来自Hadoop文件夹
Error: Could not find or load main class com.sun.tools.javac.Main
Run Code Online (Sandbox Code Playgroud)
我查看了类似的线程,人们建议检查是否JAVA_HOME正确陈述.所以在etc/hadoop/hadoop-env.sh我添加这一行
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)
然后检查是否tools.pack正确解压缩/usr/lib/jvm/java-7-openjdk-amd64/lib而且它是.然后我尝试javac -version了给了
javac 1.7.0_65
Run Code Online (Sandbox Code Playgroud)
我试图重新安装Java,但它没有解决问题.
pon*_*kin 14
尝试设置HADOOP_CLASSPATH环境变量
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)
该错误意味着您没有使用 JDK 来启动 Hadoop。JRE(纯运行时)和JDK之间的主要区别在于Java编译器javac。javac要查看您是否有 Java 编译器,您需要检查两个地方:文件夹中应该有一个$JAVA_HOME/bin,并且必须有一个文件$JAVA_HOME/lib/tools.jar。
就您而言,第一个(启动编译器的二进制文件)可能会丢失,但您绝对需要tools.jar.
你说你有一个,tools.pack但我以前没听说过这个。使用包管理器搜索openjdk,然后在结果列表中查找显示 的包jdk。在我的系统上,那就是openjdk-7-jdk. 安装此软件包,错误就会消失。