簡體   English   中英

Java:嘗試編譯Hadoop程序時找不到com.sun.tools.javac.Main

[英]Java: com.sun.tools.javac.Main not found when trying to compile Hadoop program

當我嘗試使用此命令在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 安裝此軟件包,錯誤應該消失。

我不得不將Hadoop降級到2.9.2並且它正在運行。

我在我的環境中也有這些:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM