복붙노트

[HADOOP] Java : Hadoop 프로그램을 컴파일 할 때 com.sun.tools.javac.Main을 찾을 수 없습니다.

HADOOP

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를 다시 설치하려고했지만 문제가 해결되지 않았습니다.

해결법

  1. ==============================

    1.HADOOP_CLASSPATH 환경 변수 설정 시도

    HADOOP_CLASSPATH 환경 변수 설정 시도

    export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
    
  2. ==============================

    2.이 오류는 Hadoop을 시작하기 위해 JDK를 사용하지 않는다는 것을 의미합니다. JRE (순수 런타임)와 JDK의 주요 차이점은 Java 컴파일러 javac입니다. Java 컴파일러가 있는지 확인하려면 다음 두 위치를 확인해야합니다. $ JAVA_HOME / bin 폴더에 javac가 있어야하며 $ JAVA_HOME / lib / tools.jar 파일이 있어야합니다.

    이 오류는 Hadoop을 시작하기 위해 JDK를 사용하지 않는다는 것을 의미합니다. JRE (순수 런타임)와 JDK의 주요 차이점은 Java 컴파일러 javac입니다. Java 컴파일러가 있는지 확인하려면 다음 두 위치를 확인해야합니다. $ JAVA_HOME / bin 폴더에 javac가 있어야하며 $ JAVA_HOME / lib / tools.jar 파일이 있어야합니다.

    귀하의 경우, 첫 번째 (컴파일러를 시작하는 바이너리)가 누락 될 수 있지만 반드시 tools.jar가 필요합니다.

    당신은 공구가 있다고 말합니다. 짐을 꾸리는데 전에는이 얘길들은 적이 없습니다. 패키지 관리자를 사용하여 openjdk를 검색 한 다음 jdk라고 표시된 결과 목록에서 패키지를 찾습니다. 내 시스템에서는 openjdk-7-jdk가됩니다. 이 패키지를 설치하면 오류가 사라집니다.

  3. ==============================

    3.Hadoop을 2.9.2로 다운 그레이드해야만했습니다.

    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
    
  4. from https://stackoverflow.com/questions/27299273/java-com-sun-tools-javac-main-not-found-when-trying-to-compile-hadoop-program by cc-by-sa and MIT license