【问题标题】:Does wildcard pattern supported in loader.path for spring boot applicationloader.path 是否支持 Spring Boot 应用程序的通配符模式
【发布时间】:2015-10-27 21:56:30
【问题描述】:

如何在带有 -Dloader.path 参数的 Spring Boot 应用程序启动中使用 /path/test-*.jar 类型的路径。 我试着做

java -Dserver.port=8090 -Dloader.path=/path/test*.jar, myJar.jar  -jar myJar.jar   org.springframework.boot.loader.PropertiesLauncher

但它会引发以下异常:

java.lang.IllegalArgumentException: File must exist
    at org.springframework.boot.loader.data.RandomAccessDataFile.<init>(RandomAccessDataFile.java:67)
    at org.springframework.boot.loader.data.RandomAccessDataFile.<init>(RandomAccessDataFile.java:51)
    at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:95)
    at org.springframework.boot.loader.archive.JarFileArchive.<init>(JarFileArchive.java:61)
    at org.springframework.boot.loader.archive.JarFileArchive.<init>(JarFileArchive.java:57)
    at org.springframework.boot.loader.PropertiesLauncher.getArchive(PropertiesLauncher.java:492)
    at org.springframework.boot.loader.PropertiesLauncher.getClassPathArchives(PropertiesLauncher.java:469)
    at org.springframework.boot.loader.PropertiesLauncher.getClassPathArchives(PropertiesLauncher.java:444)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:60)
    at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:609)

还是它必须是目录或 jar 的绝对路径??

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    the documentation中所述

    可以包含目录(递归扫描 jar 和 zip 文件)、存档路径或通配符模式(用于默认 JVM 行为)。

    您必须将您的 test*-.jar 放在一个目录中并添加对该目录的引用。

    【讨论】:

    • 它已经在一个目录中。如果我给出目录的路径,它就可以工作。但如果我使用通配符,它​​不会。为什么我使用通配符:因为我不想加载该目录中的所有 jar
    • 但是文档说,它可以包含通配符模式
    • (对于默认的 JVM 行为) 部分很重要。有关“默认 JVM 行为”的含义,请参阅 this thread
    • 如果你使用 bash,你可以使用它的模式匹配来解析通配符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2018-07-26
    • 2022-01-15
    • 2014-05-23
    • 2023-03-14
    • 2012-02-12
    相关资源
    最近更新 更多