2016-02-29 84 views
0

我已經編寫了一個應用程序,它使用文本文件中的sql腳本。我已經將.txt文件放在項目根文件夾中。Web項目內部jar所需文件的相對路徑

enter image description here

我出口項目後,裝入瓶內,並把它放在/ lib文件夾中的web項目中。使用.txt文件的進程找不到它。

enter image description here

凡把文件?

+0

您應該加載該文件作爲類路徑的資源,而不是一個真正的文件。 – fge

+0

你能舉個例子嗎? – MaxG

回答

1

當在web應用程序的上下文中,或任何正在運行的jar時,不要使用文件系統資源;他們只能在IDE環境中工作。

使用這個代替(例如,有其他方法可以做到這一點):

public class MyClass 
{ 
    private static final URL RESOURCE_URL; 

    static { 
     RESOURCE_URL = MyClass.class.getResource("/my/resource"); 
     if (RESOURCE_URL == null) 
      throw new ExceptionInInitializerError("/my/resource not found"); 
    } 
    // bla bla... 

    // code to load from the resource: 

    try (
     final InputStream in = RESOURCE_URL.openStream(); 
     // others, as needed 
    ) { 
     // work here 
    } 
+0

對不起,我真的不明白在File中聲明路徑和在資源中聲明它的區別。請參閱圖片中的TABLE.txt。 – MaxG

+0

當你將webapp打包爲一場戰爭時,你認爲會有一個名爲'TABLE.txt'的_file_嗎?不會。會有資源嗎?是。您應該使用IDE中的文件作爲資源,因爲當webapp運行時,_it不會是文件。至於把它放在哪裏,把它放在你的webapp的資源目錄中(這裏的位置取決於項目,但通常在'src/main/resources'中)。 – fge