2016-12-19 12 views
0

質問が重複していないうちに:他の関連する質問はすべて見ましたが、おそらく、私はUnixではなくCygwinを使用しているからです。Hadoop「mainクラスcom.sun.tools.javac.Mainを見つけることができませんでした。」

私は修道院を試していますhere。コマンドを実行するたびに(c:/ hadoop)bin/hadoop com.sun.tools.javac.Main WordCount.javaと入力すると、エラーCould not find or load main class com.sun.tools.javac.Mainが表示されます。 (echo $JAVA_HOMEがこれを確認した)c:/PROGRA~1/Java/jdk1.7.0_17、そして私のHADOOP_CLASSPATHからc:/PROGRA~1/Java/jdk1.7.0_17/lib/tools.jar

Java_Home変数がに設定されています。

javac -versionは、私がjdk1.7.0_17を使用していることを確認します。

誰でも問題が分かるだろうか?

+0

どのようにhandoop(コマンド)を実行していますか? java -jar ...のようなものを使用している場合、他の依存関係を指定するために-cpを使用していますか? – pringi

+0

@pringi私はあなたが何を意味するのか正確には分かりません。私は上記のようにhadoopコマンドを実行しています: 'bin/hadoop com.sun.tools.javac.Main WordCount.java'(追加フラグなし)。それともあなたが意味するものではありませんか? – dreamer

+0

呼び出されるJavaバイナリがシステム全体のJREではなく、JDKであることは間違いありませんか? –

答えて

1

WindowsとUnix/Linuxツール間の違いの一つは、C:\...パス表記をサポートするために、どこWindowsで、PATHCLASSPATH変数の扱いで、PATHCLASSPATHでの区切り文字はセミコロン;あり、およびLinux上で、ファイルパス内の:が非常にまれである場合、区切り文字は:です。

cygwinで実行している場合は、Unix/LinuxバージョンのHadoop(おそらくJavaも同様)を使用しています。つまり、おそらくCLASSPATHがコロン(:)で区切られていると考えられます。

あなたが与えたパスの "Unix"バージョンを使うべきです.を/cygdrive/cに置き換えてcygwinで利用可能です。

+0

もう一度おねがいします! :) – dreamer

関連する問題