升级了一些Glassfish/Grizzly依赖项(为了与Azure的SDK设备客户端的最新版本兼容),我开始收到一个错误,因为com.google.common.EventBus已经不存在了。添加依赖项:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>修正了这个问题,并且它能够在IntelliJ中本地运行。但是,当我将编译到Raspberry的.deb文件部署到Raspberry时,它开始产生错误:
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.internal.InjectorShell$RootModule )com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223),com.google.inject.spi.Elements.getElements(Elements.java:101),com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133),com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103),com.google.inject.Guice.createInjector( 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) at : 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依赖项引用了here),但是它没有效果。当我这样做时,结果是两个javax.inject jars (生成的另一个jars似乎解释了为什么我不需要显式添加版本1才能在本地运行):
javax.inject-2.5.0-b42.jar javax.inject-1.jar
Someone else here在拥有这两个jars时使用了排除,但是即使我相应地更改了hk2依赖项,两个jars仍然存在。我也听说过添加javax.ws.rs-api是有帮助的,但这已经存在了。Java代码中的导入直接引用了com.google.inject.Provider,因此我认为没有必要调用guicify将JSR-330提供程序转换为Guice。将本地代码中的每个"com.google.inject“导入替换为"java.inject”会产生相同的行为,因此它必须是引用google代码的依赖项,这反过来又无法找到javax。
发布于 2018-07-10 13:40:36
原来原因是Pi上的一个脚本,它硬编码了类路径中的罐子。
https://stackoverflow.com/questions/51253576
复制相似问题