Java web项目中jar所需文件的相对路径

Java web项目中jar所需文件的相对路径,java,web-services,filepath,Java,Web Services,Filepath,我已经编写了一个应用程序,它使用文本文件中的sql脚本。我已将.txt文件放在项目根文件夹中 将项目导出到jar并将其放入web项目中的/lib文件夹后。使用.txt文件的进程找不到它 将文件放在何处?在Web应用程序或任何正在运行的jar上下文中,不要使用文件系统资源;它们只能在IDE环境中工作 改用此方法(例如,还有其他方法): 在webapp或任何运行jar的上下文中,不要使用文件系统资源;它们只能在IDE环境中工作 改用此方法(例如,还有其他方法): 您应该将此文件作为类路径资源加载

我已经编写了一个应用程序,它使用文本文件中的sql脚本。我已将.txt文件放在项目根文件夹中

将项目导出到jar并将其放入web项目中的/lib文件夹后。使用.txt文件的进程找不到它


将文件放在何处?

在Web应用程序或任何正在运行的jar上下文中,不要使用文件系统资源;它们只能在IDE环境中工作

改用此方法(例如,还有其他方法):


在webapp或任何运行jar的上下文中,不要使用文件系统资源;它们只能在IDE环境中工作

改用此方法(例如,还有其他方法):


您应该将此文件作为类路径资源加载,而不是作为真正的文件加载。请给我举个例子好吗?您应该将此文件作为类路径资源加载,而不是作为真正的文件加载。请给我举个例子好吗?对不起,我真的不理解在文件中声明路径和在资源中声明路径之间的区别。请参考图片中的TABLE.txt。当您将Web应用程序打包为war时,您认为会有一个名为
TABLE.txt
的文件吗?没有,会有资源吗?对您应该将IDE中的文件用作资源,因为当webapp运行时,它将不是文件。至于放在哪里,请将它放在您的webapp的resources目录中(它所在的位置取决于项目,但通常位于
src/main/resources
)。对不起,我不太理解在文件中声明路径和在资源中声明路径之间的区别。请参考图片中的TABLE.txt。当您将Web应用程序打包为war时,您认为会有一个名为
TABLE.txt
的文件吗?没有,会有资源吗?对您应该将IDE中的文件用作资源,因为当webapp运行时,它将不是文件。至于放在哪里,请将它放在您的webapp的resources目录中(它所在的位置取决于项目,但通常位于
src/main/resources
)。
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
    }