2016-02-29 82 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