1

新しいプロジェクトの開始を容易にするために、Eclipseで別々のプロジェクトに定期的に使用するいくつかのクラスを「考慮」しました。私はこのプロジェクトをオールインワンと呼びます。これは、さまざまな抽象クラスと私がよく使うOpenGL関連のメソッドを保持しています。別のプロジェクトからのEclipse読み込みファイル

(オールインワンは、ビルド・パスに含まれている)

私がいる問題は、私がテストプロジェクトにそれを呼ぶことにします、別のプロジェクトです。テストプロジェクトで(オールインワンを参照して)SimpleShaderクラスのインスタンスを作成しますが、実行時にdefault.vertを検索して見つからない(java.io.FileNotFoundException)

私は、それはshdrフォルダとその内容を知らない親プロジェクトと関係があります。クラスがテストプロジェクトで「作成されました」と表示されている場合、All-In-Oneのsrcフォルダは表示されません。私は、テストプロジェクトのshdrフォルダにフォルダをリンクしようとしましたが、何も変更されませんでした。

All-In-One Project 
    src/ 
     SimpleShader.java 
     shdr/ 
      default.vert 
      .... other files 
Test Project 
    src/ 
     Here would be the main file that creates an instance of 
     SimpleShader, which then looks for default.vert (but can't find it) 

私はすべての主要なもののために別々のプロジェクトを作成する前にこの

String filename = "shdr/default.vert"; // It's actualy passed via a parameter, but this works. 
FileInputStream in = new FileInputStream(filename); // Boom java.io.FileNotFoundException: 

でファイルをロードし、これがうまく働きました。私はそれが私が知らない、または理解していない単純なものであることを願っています。

ありがとうございます。

+1

にどのようにビルド・パスは次のように見えますか?オールインワンを適切なバージョン管理のjarライブラリとして使用してみませんか? – Gildraths

答えて

0

Guentherが言ったことを踏まえて、私はすでに成功していないものを試してみました。私はインスピレーションを受けて、これがうまくいくことを発見しました。

String filename = SimpleShader.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm().substring(5)+filename; 

出力気にいら似

/workspace/All-In-One/bin/shdr/default.vert 
0

プロジェクトをビルドパスに配置すると、ファイルシステムからファイルに直接アクセスすることはできません。参照されるプロジェクトはjarファイルとしてビルドされ、生成されたjarはビルドパスに置かれます。したがって、クラスパスから探しているリソースを読み込む必要があります。 InputStream stream = TestShader.class.getResourceAsStream( "path/to/resouce");

詳細については、Class.getResourceAsStream()のApi-Docを参照してください。

関連する問題