gpt4 book ai didi

java - "NoClassDefFoundError: javax/inject/Provider"即使包含 javax.inject 依赖项

转载 作者:行者123 更新时间:2023-12-05 07:32:25 33 4
gpt4 key购买 nike

在升级了一些 Glassfish/Grizzly 依赖项之后(为了与最新版本的 Azure SDK IOT 设备客户端兼容),我开始出现错误,因为 com.google.common.EventBus 不再存在。添加依赖:

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>

修复了这个问题,它能够在 IntelliJ 中本地运行。但是,当我部署编译到 Raspberry Pi 的 .deb 文件时,它开始产生错误:

java.lang.NoClassDefFoundError: javax/inject/Provider at com.google.inject.internal.MoreTypes.canonicalizeForKey(MoreTypes.jav a:81) at com.google.inject.Key.(Key.java:119) at com.google.inject.Key.get(Key.java:212) at com.google.inject.spi.Elements$RecordingBinder.bind(Elements.java:262 ) at com.google.inject.internal.InjectorShell$RootModule.configure(InjectorShell.java:276) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) at com.google.inject.spi.Elements.getElements(Elements.java:101) at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103) at com.google.inject.Guice.createInjector(Guice.java:95) at com.google.inject.Guice.createInjector(Guice.java:72) at com.google.inject.Guice.createInjector(Guice.java:62) at com.infusion.empm.Main.main(Main.java:32) Caused by: java.lang.ClassNotFoundException: javax.inject.Provider at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

我在很多地方读到添加依赖

<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

应该解决这个问题(我已经引用了 guice 和 javax-servlet-api 依赖项 here ),但它没有效果。当我这样做时,结果是两个 javax.inject jar(生成的另一个 jar 似乎可以解释为什么我不需要显式添加版本 1 来让它在本地运行):

javax.inject-2.5.0-b42.jar

javax.inject-1.jar

Someone else here当他们有这两个 jar 时使用了排除项,但即使我相应地更改了我的 hk2 依赖项,这两个 jar 仍然存在。我还听说添加 javax.ws.rs-api 应该有所帮助,但那已经存在了。 Java 代码中的导入直接引用 com.google.inject.Provider,因此我认为没有必要调用 guicify 将 JSR-330 提供程序转换为 Guice 提供程序。将本地代码中的每个“com.google.inject”导入替换为“java.inject”会导致完全相同的行为,因此它必须是引用 google 代码的依赖项,而后者又无法找到 javax。

最佳答案

原来是 Pi 上的一个脚本对类路径中的 jars 进行了硬编码。

关于java - "NoClassDefFoundError: javax/inject/Provider"即使包含 javax.inject 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253576/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com