проблема с classpath в hadoop java - PullRequest
2 голосов
/ 06 декабря 2011
javac -classpath "/installs/hadoop-0.20.2/*.jar;/installs/hadoop-0.20.2/lib/*.jar" appClientModule/grid/comp/tools/CleanTmp.java
appClientModule/grid/comp/tools/CleanTmp.java:2: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.*;
^
appClientModule/grid/comp/tools/CleanTmp.java:3: package org.apache.hadoop.mapred does not exist
import org.apache.hadoop.mapred.JobConf;
                               ^
appClientModule/grid/comp/tools/CleanTmp.java:4: package org.apache.commons.logging does not exist
import org.apache.commons.logging.*;
^
appClientModule/grid/comp/tools/CleanTmp.java:5: package org.apache.commons.logging.impl does not exist
import org.apache.commons.logging.impl.Log4JLogger;
                                      ^
appClientModule/grid/comp/tools/CleanTmp.java:8: cannot find symbol
symbol  : class Log4JLogger
location: class grid.comp.tools.CleanTmp
    Log4JLogger lg=new Log4JLogger(this.getClass().getName());
    ^
appClientModule/grid/comp/tools/CleanTmp.java:9: cannot find symbol
symbol  : class JobConf
location: class grid.comp.tools.CleanTmp
    JobConf jconf;
    ^
appClientModule/grid/comp/tools/CleanTmp.java:8: cannot find symbol
symbol  : class Log4JLogger
location: class grid.comp.tools.CleanTmp
    Log4JLogger lg=new Log4JLogger(this.getClass().getName());
                       ^
7 errors
tools $ javac -classpath "/installs/hadoop-0.20.2/*.jar;/installs/hadoop-0.20.2/lib/*.jar" appClientModule/grid/comp/tools/CleanTmp.java
jabir:CompareHdfs jabir.ahmed$ javac -classpath "/installs/hadoop-0.20.2/*.jar;/installs/hadoop-0.20.2/lib/*.jar" appClientModule/grid/comp/tools/CleanTmp.java
appClientModule/grid/comp/tools/CleanTmp.java:2: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.*;
^
appClientModule/grid/comp/tools/CleanTmp.java:3: package org.apache.hadoop.mapred does not exist
import org.apache.hadoop.mapred.JobConf;
                               ^
appClientModule/grid/comp/tools/CleanTmp.java:4: package org.apache.commons.logging does not exist
import org.apache.commons.logging.*;
^
appClientModule/grid/comp/tools/CleanTmp.java:5: package org.apache.commons.logging.impl does not exist
import org.apache.commons.logging.impl.Log4JLogger;
                                      ^
appClientModule/grid/comp/tools/CleanTmp.java:8: cannot find symbol
symbol  : class Log4JLogger
location: class grid.comp.tools.CleanTmp
    Log4JLogger lg=new Log4JLogger(this.getClass().getName());
    ^
appClientModule/grid/comp/tools/CleanTmp.java:9: cannot find symbol
symbol  : class JobConf
location: class grid.comp.tools.CleanTmp
    JobConf jconf;
    ^
appClientModule/grid/comp/tools/CleanTmp.java:8: cannot find symbol
symbol  : class Log4JLogger
location: class grid.comp.tools.CleanTmp
    Log4JLogger lg=new Log4JLogger(this.getClass().getName());
                       ^
7 errors
tools $ ls /installs/hadoop-0.20.2/lib/*.jar
/installs/hadoop-0.20.2/lib/ant-contrib-1.0b3.jar           /installs/hadoop-0.20.2/lib/jasper-runtime-5.5.12.jar
/installs/hadoop-0.20.2/lib/aspectjrt-1.6.5.jar             /installs/hadoop-0.20.2/lib/jets3t-0.6.1.jar
/installs/hadoop-0.20.2/lib/aspectjtools-1.6.5.jar          /installs/hadoop-0.20.2/lib/jetty-6.1.26.cloudera.1.jar
/installs/hadoop-0.20.2/lib/commons-cli-1.2.jar             /installs/hadoop-0.20.2/lib/jetty-servlet-tester-6.1.26.cloudera.1.jar
/installs/hadoop-0.20.2/lib/commons-codec-1.4.jar           /installs/hadoop-0.20.2/lib/jetty-util-6.1.26.cloudera.1.jar
/installs/hadoop-0.20.2/lib/commons-daemon-1.0.1.jar            /installs/hadoop-0.20.2/lib/jsch-0.1.42.jar
/installs/hadoop-0.20.2/lib/commons-el-1.0.jar              /installs/hadoop-0.20.2/lib/junit-4.5.jar
/installs/hadoop-0.20.2/lib/commons-httpclient-3.1.jar          /installs/hadoop-0.20.2/lib/kfs-0.2.2.jar
/installs/hadoop-0.20.2/lib/commons-logging-1.0.4.jar           /installs/hadoop-0.20.2/lib/log4j-1.2.15.jar
/installs/hadoop-0.20.2/lib/commons-logging-api-1.0.4.jar       /installs/hadoop-0.20.2/lib/mockito-all-1.8.2.jar
/installs/hadoop-0.20.2/lib/commons-net-1.4.1.jar           /installs/hadoop-0.20.2/lib/oro-2.0.8.jar
/installs/hadoop-0.20.2/lib/core-3.1.1.jar              /installs/hadoop-0.20.2/lib/servlet-api-2.5-20081211.jar
/installs/hadoop-0.20.2/lib/hadoop-fairscheduler-0.20.2-cdh3u2.jar  /installs/hadoop-0.20.2/lib/servlet-api-2.5-6.1.14.jar
/installs/hadoop-0.20.2/lib/hsqldb-1.8.0.10.jar             /installs/hadoop-0.20.2/lib/slf4j-api-1.4.3.jar
/installs/hadoop-0.20.2/lib/jackson-core-asl-1.5.2.jar          /installs/hadoop-0.20.2/lib/slf4j-log4j12-1.4.3.jar
/installs/hadoop-0.20.2/lib/jackson-mapper-asl-1.5.2.jar        /installs/hadoop-0.20.2/lib/xmlenc-0.52.jar
/installs/hadoop-0.20.2/lib/jasper-compiler-5.5.12.jar## Heading ##

Так как мне установить путь к классу

Я тоже пытался установить через переменную env

$ echo $ CLASSPATH /installs/hadoop/lib/.jar:/installs/hadoop/.jar:/installs/hadoop-0.20.2/.jar:/installs/hadoop-0.20.2/lib/ .jar

все равно не получается

$ javac-версия javac 1.6.0_29

Ответы [ 4 ]

6 голосов
/ 22 декабря 2011

Для более понятного пути к классам, например:

javac -classpath $HADOOP_HOME/hadoop-core-0.20.204.0.jar:$HADOOP_HOME/lib/commons-cli-1.2.jar -d inception src/Inception.java

(в данном случае Inception - это ваша Java-программа. Не знаю, почему я упомянул это, но лучше быть более явным, чем нет!)

Большую часть времени вам понадобятся hadoop-core- (yourversion) и commons-cli, если вы используете интерфейс Tool.

0 голосов
/ 19 сентября 2016

Вместо указания отдельных библиотек просто добавьте "-classpath yarn classpath".Это делает команду довольно легкой и простой.

0 голосов
/ 15 октября 2013

Решение вопроса мне помогло.Вот синтаксис, который я использовал в HDInsight версии 2.1:

C: \ apps \ dist \ java \ bin \ javac -classpath% HADOOP_HOME% \ hadoop-core-1.2.0.1.3.0.1-0302.jar;% HADOOP_HOME% \ lib \ commons-cli-1.2.jar WordCount.java

0 голосов
/ 06 декабря 2011

Если вы установили переменную CLASSPATH, вам не нужно указывать флаг -classpath в команде javac, поскольку он будет принимать значение classpath из переменной среды CLASSPATH

Значение classpath должно указывать на фактический файл jar, а не на .jar Например,

set CLASSPATH=/myapp/mylib.jar

В зависимости от используемой платформы вы можете использовать: или; как разделитель между различными путями. Для Windows используйте; и UNIX обычно использует:

В UNIX:

set CLASSPATH=/myapp/myclasses1.jar:/myapp/myclasses2.jar

Но в Windows вам нужно использовать точку с запятой в качестве разделителя между путями

set CLASSPATH=/myapp/myclasses1.jar;/myapp/myclasses2.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...