所以我有一个非常奇怪的问题。我有一个项目,当从IntelliJ部署在Linux上时,使用了错误的依赖版本。如果我在Windows上构建war文件并在Linux上将其部署在tomcat中,那就没关系了。如果我使用IntelliJ在Windows中部署项目,那么它很好。
我从Windows版本导入了该项目。我从repo重新下载了项目并从头开始配置。我删除了maven repo并重新开始了。我改变了maven版本。我已经添加了对我知道导致问题的依赖性的排除。我相信我已经尝试过了。
我已指定并需要的插件是:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
造成冲突的插件是org.eclipse.birt.runtime,我试图为其commons-codec添加一个排除项,但它仍被拉动:
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.4.2</version>
<exclusions>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
</dependency>
导致错误的代码:
String authEncoding = Base64.encodeBase64String((user + ":" + pass).getBytes());
httpGet.addHeader("Authorization", "Basic " + authEncoding);
在我的代码中,我将以下内容查看正在使用的版本:
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中检查了两倍,并且它正确地提取了相同的确切代码和相同的确切设置&#34; org.apache.commons.codec-1.9.0.jar&#34;。所以我不知道为什么会在Linux上发生这种情况。
答案 0 :(得分:1)
我发现了这个问题。这是Linux版IntelliJ中的一个错误。这是我目前正在使用的版本:
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构建战争神器,那么它的工作正常。
如果我部署为Run或Debug配置并不重要,只有当我从IntelliJ部署为爆炸配置时才会出现此问题。
我一直与Jetbrains保持联系,他们已经让我提交错误报告。所以这是一个合法的问题。
感谢所有试图提供帮助的人。