【问题标题】:How to load FileSystemResources from jar [duplicate]如何从 jar 加载 FileSystemResources [重复]
【发布时间】:2017-07-20 07:32:57
【问题描述】:

我正在使用弹簧引导。并希望从目录加载资源。以下代码适用于文件系统环境。 但是在使用 Jar 时会出现 FileNotFoundException,因为 Spring 尝试访问文件系统路径,但无法访问 JAR 中的路径。

@EnableAutoConfiguration
@Configuration
public class Application implements CommandLineRunner {

    @Autowired
    private MongoDBMigrator migrator;

    @Autowired
    private ApplicationContext ctx;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
            migrator.runScripts(ctx.getResources("classpath:db/*.js"));
    }   
}

需要做些什么才能使其也可以与 jar 一起使用

【问题讨论】:

  • 你的 jar 在类路径中吗?
  • @rahul singh:是的。它在那里

标签: java spring


【解决方案1】:

你可以这样使用:

InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile);

如果 test.txt 在您的 JAR 文件的根目录中,您将使用:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("test.txt");

假设该类与资源在同一个 JAR 文件中,我相信

【讨论】:

  • InputStream 用于单个资源。我想将多个资源作为文件而不是作为输入流来读取。因为为了进一步操作,我需要文件路径、文件名等
  • @suvarnaChavan 是的,它用于单一资源使用,如果资源名称相同,可以使用 InputStream 列表
猜你喜欢
  • 1970-01-01
  • 2015-07-12
  • 2015-09-27
  • 2012-11-21
  • 2011-07-18
  • 2013-08-26
  • 1970-01-01
  • 2018-12-31
  • 2010-09-16
相关资源
最近更新 更多