Java Linux上的IntelliJ使用了错误的依赖项版本
所以我有一个非常奇怪的问题。我有一个项目在从IntelliJ部署到Linux上时使用了错误的依赖项版本。如果我在Windows上构建war文件,并在Linux上的tomcat中部署它,那么就可以了。如果我使用IntelliJ在Windows中部署该项目,那么就可以了 我已从Windows版本导入该项目。我已经从repo重新下载了这个项目,并从头开始进行了配置。我已经删除了maven回购协议并重新同步。我改变了maven的版本。我已经在我所知道的导致问题的依赖性中添加了排除。我相信我都试过了 我指定并需要的插件是:Java Linux上的IntelliJ使用了错误的依赖项版本,java,linux,maven,intellij-idea,Java,Linux,Maven,Intellij Idea,所以我有一个非常奇怪的问题。我有一个项目在从IntelliJ部署到Linux上时使用了错误的依赖项版本。如果我在Windows上构建war文件,并在Linux上的tomcat中部署它,那么就可以了。如果我使用IntelliJ在Windows中部署该项目,那么就可以了 我已从Windows版本导入该项目。我已经从repo重新下载了这个项目,并从头开始进行了配置。我已经删除了maven回购协议并重新同步。我改变了maven的版本。我已经在我所知道的导致问题的依赖性中添加了排除。我相信我都试过了 我指
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
在我的代码中,我放置了以下内容以查看正在使用的版本:
System.out.println(Base64.class.getProtectionDomain().getCodeSource().getLocation());
输出为:
file:/home/user/WORK/Modules/myproject/target/myproject/WEB-INF/lib/org.apache.commons.codec-1.3.0.jar
我不知道该怎么做才能解决这个问题
编辑:添加更多详细信息
Edit2:只需在Windows中加倍签入,就可以正确地提取相同的代码和相同的设置“org.apache.commons.codec-1.9.0.jar”。所以我不知道Linux上为什么会发生这种情况。我发现了这个问题。这是IntelliJ的Linux版本中的一个bug。这是我当前使用的版本:
IntelliJ IDEA 2016.3
Build #IU-163.7743.44, built on November 17, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
只有在使用分解的工件并直接从IntelliJ部署时,才会出现此问题
如果我从命令行构建,它就可以正常工作
如果我从IntelliJ构建一个战争神器,那么它工作得很好
无论我是作为运行配置还是调试配置进行部署,问题只在我从IntelliJ作为分解配置进行部署时出现
我和Jetbrains联系过,他们要求我提交一份bug报告。所以这是一个合理的问题
感谢所有试图提供帮助的人。检查org.eclipse.birt.runtime的transitve树,因为我假设有一个打包到…@khmarbaise中的commons编解码器版本已经做到了,是的,确实存在,这就是为什么我说birt插件导致了冲突。我还应该提到,我也在birt插件中添加了一个排除项,但它仍然将其引入。我已经更新了我的问题以包括排除。两个系统上的
.m2/settings.xml
文件是否相同?@EddieCurtis谢谢大家的帮助,请看我的答案provided@khmarbaise谢谢你的帮助,请看我的答案
file:/home/user/WORK/Modules/myproject/target/myproject/WEB-INF/lib/org.apache.commons.codec-1.3.0.jar
IntelliJ IDEA 2016.3
Build #IU-163.7743.44, built on November 17, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o