2011-07-29 19 views
2

JARファイル内にあるパブリッククラスからデータファイルにアクセスしようとしています。しかし、Hadoopクラスター上でjarファイルを実行すると、システムはFileNotFoundExceptionをスローします。一番下の行はです。クラスタ上でアプリケーションを実行しているときにJar内のリソースにアクセスすることは可能ですか?また、リソースをHDFSに個別にコピーする必要がありますか?上記のいずれの場合でも、 ?Jarファイルから.datファイルにアクセス

ありがとうございました!

答えて

1

はい、JARがCLASSPATHにある場合は、クラスローダーまたはサーブレットコンテキストを使用してgetResourceAsStream()を呼び出して、そのファイルのInputStreamへの参照を取得できます。

ファイルパスにアクセスすることはできません。 CLASSPATHに相対的なパスを与え、クラスローダーがそのファイルを見つけます。内容は取得できますが、絶対位置は取得できません。

あなたは絶対的な場所を望むべきではありません。あなたはそれで何をしますか?

ファイルに書き込むことはできません。何も変えることはできません。あなたのアプリがWARファイルにパッケージ化されている場合は、その内容を変更することはできません。

+0

InputStreamはJAR内のファイルパスを文字列としてプログラムに渡すか、ストリーム全体としてファイルを読み込んでいます。なぜなら、ファイルがある場所の文字列が必要だからです。 –

+0

OPは実際に2つの質問を 'どちらか/または'の形式で尋ねたので、「はい」はやや混乱します。あなたの答えの残りの部分はかなり明確です。 –

+0

* "ファイルがある場所に文字列が必要です" * 1)ファイルではなく、アーカイブ内のリソースです。 2) 'File'または' URL'オブジェクトを 'String'に変換することは、ほとんど** **まったく良いアイデアです。なぜあなたはそれが必要だと思いますか? –

関連する問題