1

爲了讓新項目更容易啓動,我將幾個定期使用的類放到了eclipse中的一個單獨項目中。我稱這個項目爲All-In-One。它擁有我經常重用的各種抽象類和OpenGL相關方法。來自不同項目的Eclipse加載文件

(包括在構建路徑全合一)

我遇到的問題是另外一個項目,我會打電話給它的測試項目。我在測試項目中創建了一個SimpleShader類的實例(引用了All-In-One),但是在運行時,它搜索了default.vert並且沒有找到它(java.io.FileNotFoundException)

I' m猜測它與Parent Project不知道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」);

有關更多信息,請參閱Api-Doc for Class.getResourceAsStream()。

相關問題