【问题标题】:spring boot System.getProperty("java.class.path") doesn't include lib/ jarsspring boot System.getProperty("java.class.path") 不包括 lib/jars
【发布时间】:2015-09-25 16:07:52
【问题描述】:

我有一个 spring boot 应用程序,我正在使用 spring-boot antlib 构建一个 myApp.jar。当我 jar -tf myApp.jar 时,我看到我有一个名为 lib/foo.jar 的 jar。然而,当我打印出 System.getProperty("java.class.path") 时,我在类路径上看不到那个 jar 文件。当代码第一次尝试使用这个类时,我也会从 URLClassLoader 得到一个 ClassNotFound 异常。我正在使用 JarLauncher,因为这是 antlib 的默认设置。

知道为什么这个 jar 文件不在类路径上吗?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    您不会在 System.getProperty('java.class.path') 中看到捆绑的 JAR。类路径指定 JVM 将在 文件系统 中查找您尝试加载的类的位置。

    Spring Boot 使用胖 JAR,它们以完全不同的方式加载。参考Spring Bootdocumentation

    【讨论】:

    • 所以如果我需要在 jar 内的类路径中添加一些东西,我该怎么做?我有一些在 java.class.path 上查看的第 3 方代码,以确定它是否应该加载。
    • 不幸的是,第三方库的工作方式不正确,因为如您所见,类路径并不是可以加载哪些类的可靠指标。在这种情况下,要使用此库,您不能捆绑 JAR。它必须单独驻留在文件系统中类路径中标识的位置。
    猜你喜欢
    • 2018-01-26
    • 2015-06-13
    • 2017-07-08
    • 2016-01-06
    • 2015-04-01
    • 2018-06-28
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多