java - Jlink Spring Boot

标签 java spring spring-boot maven jlink

我有一个简单的 hello world spring 2 启动应用程序,它与完整的 JDK 13 一起运行。现在我正试图让它与使用 spring boot 的自定义 JRE 一起运行。

过去当我需要外部 jar 时,我运行了 jdeps -s json-20190722.jar看看我需要什么模块。

$jdeps -s json-20190722.jar 
json-20190722.jar -> java.base

但是当我用 Spring 做这个时,我得到了
$jdeps -s spring-boot-2.2.4.RELEASE.jar
spring-boot-2.2.4.RELEASE.jar -> java.base
spring-boot-2.2.4.RELEASE.jar -> java.desktop
spring-boot-2.2.4.RELEASE.jar -> java.logging
spring-boot-2.2.4.RELEASE.jar -> java.management
spring-boot-2.2.4.RELEASE.jar -> java.naming
spring-boot-2.2.4.RELEASE.jar -> java.sql
spring-boot-2.2.4.RELEASE.jar -> java.xml
spring-boot-2.2.4.RELEASE.jar -> not found

当我这样做时它也会失败
$ jdeps --generate-module-info . spring-boot-2.2.4.RELEASE.jar | more
Missing dependence: ./spring.boot/module-info.java not generated
Error: missing dependencies
spring.boot
   org.springframework.boot.Banner                    -> org.springframework.core.env.Environment           not found
   org.springframework.boot.BeanDefinitionLoader      -> groovy.lang.Closure                                not found

我在这里想念什么?

谢谢

最佳答案

您还需要所有依赖项并将其指向类路径选项。

$jdeps -R -s --multi-release 13 -cp 'path-to-dependencies/*' your-app.jar

如果你提取你的 fat jar,你可以找到所有的依赖项(见 The Executable Jar File Structure):
 jar -xvf your-jar-file.jar

或者使用 Gradle 和自定义任务检索它们:
task copyDependencies(type: Copy) {
    from configurations.default
    into 'build/libs/dependencies'
}

关于java - Jlink Spring Boot ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869897/

相关文章:

java - 通过新加载的类对静态变量所做的更改似乎不适用。 ( java )

java - Spring ContextLoader 找不到 applicationContext.xml

数组方法参数的 Spring 表达式语言 (SpEL)

java - Spring AMQP 返回回调与重试回调

java - 如何在带有验证注释的 bean 属性的测试用例中引发 ConstraintValidationException?

java - 创建 Hadoop java 示例

java - 如何知道我的java编译器的路径

java - <h :selectOneMenu> NullPointerException getAsObject method

Java derby嵌入式数据库错误: The syntax of the string representation of a date/time value is incorrect

java - 配置spring缓存咖啡因