在tomcat Web应用程序的类路径中动态添加属性文件

iha*_*obs 2 java classpath java-ee

我正在尝试将属性文件动态添加到类路径,如下所示

try {
    File fileToAdd = new File(FILE_PATH);
    URL u = fileToAdd.toURL();
    ClassLoader sysLoader = ClassLoader.getSystemClassLoader();
    if (sysLoader instanceof URLClassLoader) {
    sysLoader = (URLClassLoader) sysLoader;
    Class<URLClassLoader> sysLoaderClass = URLClassLoader.class;

    // use reflection to invoke the private addURL method
    Method method = sysLoaderClass.getDeclaredMethod("addURL",
        new Class[] { URL.class });
    method.setAccessible(true);
    method.invoke(sysLoader, new Object[] { u });
    }
} catch (Exception e) {
    logger.error(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

但是我在类路径中看不到该文件。当我使用检查

System.getProperty("java.class.path")
Run Code Online (Sandbox Code Playgroud)

我在此列表中看不到我的文件。我在这里想念什么吗?

fas*_*seg 5

您不能添加属性文件的URL,而必须添加属性文件所在目录URL。如:中所示:method.invoke(sysLoader, fileToAdd.getParent().toURL()); 然后您可以使用ClassLoader.getResourceAsStream("my.properties");并且ClassLoader将在新添加的目录中搜索该文件。

URLClassLoader

“该类加载器用于从同时引用JAR文件和目录的URL的搜索路径中加载类和资源。任何以'/'结尾的URL 均被认为是目录。否则,该URL被认为是对目录的引用。到将根据需要打开的JAR文件。”