【问题标题】:How to load the bean XML file from another jar using ClassLoader如何使用 ClassLoader 从另一个 jar 加载 bean XML 文件
【发布时间】:2021-03-08 17:58:01
【问题描述】:

我需要使用 ClassLoader 加载位于另一个 Jar 文件中的 bean XML 文件。 任何人都可以在这里帮助我。

【问题讨论】:

  • 为什么需要类加载器而不是使用 Spring 来加载它们?
  • 我正在开发的应用程序不是 Spring 应用程序,它是 Jenkins 插件。我只需要从另一个 jar 中读取这些 bean XML 文件并将其传递给另一个 api。
  • 如果它与 Spring 无关,那么为什么将其标记为 Spring?如果插件使用的是 Spring,你仍然可以使用 Spring 来加载它。否则只需使用常规的加载方式(它将从类路径加载,jar 是类路径的一部分)。

标签: java jenkins jar classloader urlclassloader


【解决方案1】:

有两种方法可以读取其他 jar 中的文件。这些方式适用于jar模式下的应用。请参阅下面的示例。我刚刚在 thymeleaf.jar 文件中阅读了 thymeleaf.properties。

  1. 使用 jdk 类加载器
  2. 使用spring PathMatchingResourcePatternResolver

import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;


public class MyService  {

    public static void printInfo() throws Exception {
        InputStream fis = MyService.class.getClassLoader().getResourceAsStream("org/thymeleaf/thymeleaf.properties");
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        String s = "";
        while ((s = br.readLine()) != null){
            System.out.println(s);
        }
        br.close();

        PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = patternResolver.getResources("org/thymeleaf/thymeleaf.properties");
        if (resources != null && resources.length > 0) {
            br = new BufferedReader(new InputStreamReader(resources[0].getInputStream()));
            s = "";
            while ((s = br.readLine()) != null){
                System.out.println(s);
            }
            br.close();
        }

    }

    public static void main(String[] args) throws Exception {
        printInfo();
    }
}

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2013-05-12
    • 2014-11-22
    相关资源
    最近更新 更多