lib/javax.inject-1.jar中的javax/inject/Inject.class被onejar可执行文件上的lib/javax.inject-2.5.0-b42.jar隐藏 [英] javax/inject/Inject.class in lib/javax.inject-1.jar is hidden by lib/javax.inject-2.5.0-b42.jar on onejar executable

查看:269
本文介绍了lib/javax.inject-1.jar中的javax/inject/Inject.class被onejar可执行文件上的lib/javax.inject-2.5.0-b42.jar隐藏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个原子可执行jar(即jar外部没有依赖项).

I am attempting to create an atomic executable jar (i.e. no dependencies outside of the jar).

为此,我在pom.xml中添加了com.jolira:onejar-maven-plugin.这似乎可以完成工作,但是当我执行jar时,我得到了警告: JarClassLoader:警告:与以下内容关联的输入流中的空清单文件:lib/javax.inject-1.jar JarClassLoader:警告:lib/javax.inject-1.jar中的javax/inject/Inject.class被lib/javax.inject-2.5.0-b42.jar隐藏(具有不同的字节码) JarClassLoader:警告:lib/javax.inject-1.jar中的javax/inject/Named.class被lib/javax.inject-2.5.0-b42.jar隐藏(具有不同的字节码)

To do this I have added a com.jolira:onejar-maven-plugin in my pom.xml. This seems to do the job, but when I execute the jar I get the warnings: JarClassLoader: Warning: Null manifest from input stream associated with: lib/javax.inject-1.jar JarClassLoader: Warning: javax/inject/Inject.class in lib/javax.inject-1.jar is hidden by lib/javax.inject-2.5.0-b42.jar (with different bytecode) JarClassLoader: Warning: javax/inject/Named.class in lib/javax.inject-1.jar is hidden by lib/javax.inject-2.5.0-b42.jar (with different bytecode)

似乎我的依赖项同时引入了javax.inject-1.jar和javax.inject-2.5.0-b42.jar.为了验证这一点,我检查了两者,并且都已经/正在从存储库中下载它们.我当然没有在依赖项中同时列出两者,因此必须有一些隐含的依赖项AFAICS.

It seems that my dependencies are pulling in both javax.inject-1.jar and javax.inject-2.5.0-b42.jar. To verify this I checked and both have/are being downloaded from the repository. I certainly don't have both listed in the dependencies, so there must be some implied dependency AFAICS.

任何人都知道是否有一种方法可以将一个jar排除在maven依赖项之外,或者可以防止onejar-maven-plugin将其包含在可执行jar中吗?

Anyone know if there is a way to exclude just one jar from a maven dependency, or alternately to prevent onejar-maven-plugin from including it in the executable jar?

有没有更好的方法来创建原子(或称其为胖)的jar,Java加载程序实际上可以从嵌入式jar进行加载.我一整天都在尝试各种不同的食谱,而onejar是唯一能够真正起作用的食谱.

Is there a better way to create an atomic (or some call them fat) jar where the java loader can actually load from an embedded jar. I've tried all day with various different recipes and onejar was the only one that actually got the loaded to work.

推荐答案

只需将其放在此处以备将来使用. 我以这种方式解决了这个问题: (这是针对项目的依赖关系,它在自己的依赖项中具有javax.inject)

Just putting this here for future. I solved the problem in this way: (It's for project's dependency which has javax.inject in its own dependencies)

<exclusion>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
</exclusion>

这篇关于lib/javax.inject-1.jar中的javax/inject/Inject.class被onejar可执行文件上的lib/javax.inject-2.5.0-b42.jar隐藏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆