次のようなコードで、内部的に HDFS の場所に実行している jar をコピーしようとしています。
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()
クラスパスを正しくエクスポートすると:
export $HADOOP_CLASSPATH=/path/to/jar.jar
次に、jar を実行している場所から正しいパスを取得します。ただし、jar の名前を間違って指定すると、次のようになります。
export $HADOOP_CLASSPATH=/path/to/jar1.jar
次に、実行前に jar を展開する tmp フォルダーへのパスを取得します。
なぜこれが起こっているのかを理解するのを手伝ってくれる人はいますか?
ありがとう