Java:尝试编译Hadoop程序时找不到com.sun.tools.javac.Main
当我尝试使用此命令在Hadoop中编译我的程序时
bin/hadoop com.sun.tools.javac.Main WordCounter.java
它说,来自Hadoop文件夹
Error: Could not find or load main class com.sun.tools.javac.Main
我查看了类似的线程,人们建议检查JAVA_HOME
是否正确陈述。 所以在etc/hadoop/hadoop-env.sh
我添加了这一行
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
然后检查tools.pack
是否在/usr/lib/jvm/java-7-openjdk-amd64/lib
正确解压缩。 然后我尝试了javac -version
javac 1.7.0_65
我试图重新安装Java,但它没有解决问题。
尝试设置HADOOP_CLASSPATH环境变量
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
该错误意味着您不使用JDK来启动Hadoop。 JRE(纯运行时)和JDK之间的主要区别是Java编译器javac
。 要查看是否有Java编译器,需要检查两个位置: $JAVA_HOME/bin
文件夹中应该有一个javac
,并且必须有一个文件$JAVA_HOME/lib/tools.jar
。
在您的情况下,第一个(启动编译器的二进制文件)可能会丢失,但您绝对需要tools.jar
。
你说你有一个tools.pack
但我以前没有听说过这个。 使用包管理器搜索openjdk
,然后在结果列表中查找包含jdk
。 在我的系统上,那将是openjdk-7-jdk
。 安装此软件包,错误应该消失。
- YarnException:未经授权的启动容器的请求
- 来自hbase / filesystem的hadoop namenode连接中EOFexception的含义是什么?
- Spring Boot YARN无法在Hadoop上运行2.8.0客户端无法访问DataNode
- “hadoop namenode -format”返回java.net.UnknownHostException
- Spring + Maven + Hadoop
- 无法找到或加载主类com.sun.tools.javac.Main hadoop mapreduce
- Hive NVL不适用于列的日期类型 – NullpointerException
- 用Java读取HDFS和本地文件
- Hive,我如何检索所有数据库的表列