2012-01-23 11 views
0

私はjava -classpath $CLASSPATH ...を使用しています。$CLASSPATH/file1path/file1:/file2path/file2に設定されています。それにもかかわらず、Javaはfile1が見つかりませんでした。私は-Dfile1=file:///fullpath/file1に設定しようとしましたが、まだファイルが見つからないと言います。これが、私がタイプミスや何か(私が何度もチェックした)のようなより単純な問題を見ていないということ以外に何らかの理由がありますか?Javaコンパイラが、クラスパスで明示的にファイルを見つけられなかった場合、そのファイルがクラスパスに見つかりませんでした。

具体的には、this.getClass().getClassLoader().getResourceAsStream(configurationFileName)nullです。

見つからないファイルは、構成ファイル(.properties)であり、JARファイルではありません。

+1

ファイルが見つからないクラスファイルですか?そうでない場合は、ファイルはjarファイルの一部ですか? –

+1

エラーを取得するためにファイルをどのように探していますか? .javaファイル、.propertiesファイルなどについて話していますか?私はあなたが直接IDEなしでjavaを呼び出すと仮定していますか?また、ソースフォルダを探していて、別のクラスフォルダを使用している場合は、ファイルがクラスフォルダにコンパイルされていることを確認してください。 –

+0

これは.propertiesファイルです。 –

答えて

3

classpathは、リソースを含むディレクトリまたはリソースを含むディレクトリを指すように設定します。 classpathに直接リソースを追加することはできません。あなたのパッケージの階層が根付いたディレクトリを指定する必要があり、あなたのclasspath

+0

ファイルは以前はクラスパスに直接追加されていたようですが、これは動作していました。 –

+0

私は本当にそれを聞いて驚いています。私はそれを実際に見たことがないし、ちょっと試してみたところ、直接ファイルを参照してもうまくいきませんでした。このSun JVMですか? – Vadim

+0

また、参照されるファイルがクラスパス内のディレクトリまたはjarに存在する可能性はありますか? – Vadim

3

/file1path/file1代わりの/file1pathにクラスパスを設定

してみてください。

パッケージorg.djna、ファイルシステム:あなたがgetResourceAsStream()を使用してアプリケーションからファイルを開こうとしている場合はC:/myhome/javastuff/org/djna/Myclass.java

クラスパスはc:/myhome/javastuff

に設定されているか、パスのこのようないくつかの詳細がかどうかに依存またはファイル名に先頭に/が含まれていないかどうか。ドキュメントをうっかり読んでみるとすべてがクリアになります。

+0

私はhttp://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29を読んでおり、すべてが明確になっていません。もっと参考になると思われる他のドキュメントがありますか? –

+0

スラッシュはそれと関係がないようです。 –

関連する問題