首页 > 解决方案 > sbt / native-packager, new jdeps error: java.lang.module.FindException: Module java.activation not found, required by java.xml.bind

问题描述

据我所知,我没有改变我的设置。到今天为止,尝试使用 jlink 运行 sbt native packager 会出现以下错误:

[info] Running: jdeps --multi-release 11 -R ...
[error] Exception in thread "main" java.lang.module.FindException: Module java.activation not found, required by java.xml.bind
[error]     at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)
[error]     at java.base/java.lang.module.Resolver.resolve(Resolver.java:191)
[error]     at java.base/java.lang.module.Resolver.resolve(Resolver.java:140)
[error]     at java.base/java.lang.module.Configuration.resolve(Configuration.java:422)
[error]     at java.base/java.lang.module.Configuration.resolve(Configuration.java:256)
[error]     at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:564)
[error]     at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:603)
[error]     at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:557)
[error]     at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:533)
[error]     at jdk.jdeps/com.sun.tools.jdeps.Main.run(Main.java:64)
[error]     at jdk.jdeps/com.sun.tools.jdeps.Main$JDepsToolProvider.run(Main.java:73)
[error]     at java.base/java.util.spi.ToolProvider.run(ToolProvider.java:137)
[error]     at ru.eldis.toollauncher.ToolLauncher.runTool(ToolLauncher.java:68)
[error]     at ru.eldis.toollauncher.ToolLauncher.lambda$main$1(ToolLauncher.java:33)
[error]     at ru.eldis.toollauncher.ToolLauncher.main(ToolLauncher.java:48)

我该如何解决?我尝试添加javax.activationlibraryDependencies,这似乎没有任何效果或与此问题有任何关系。


编辑:的根本问题似乎是我对 Pi4j 1.4 的依赖,这取决于javax.xml.bind:jaxb-api哪个又依赖于javax.activation:javax.activation-api. 现在我不太了解这些 Java 模块的东西,但是 javax.activation-api 确实存在于 Maven 上,那么为什么 jdeps 会抱怨呢?如果我 exclude javax.xml.bind,它可以工作,但现在我担心我实际上在类路径上缺少东西。

标签: scalasbtsbt-native-packagerjlink

解决方案


javax.activation 自 java 11 以来已被删除。要修复它,您可以:

  • 下载 javax.activation jar 并通过在模块路径上添加此 jar 来运行命令:

    jdeps --multi-release 11 -R --module-path path\to\javax.activation.jar ...

  • 使用 java 8 jdeps 运行此命令


推荐阅读