java - Linux 上的 IntelliJ 使用错误的依赖版本

标签 java linux maven intellij-idea

所以我有一个非常奇怪的问题。我有一个项目在从 IntelliJ 部署到 Linux 上时使用了错误的依赖项版本。如果我在Windows上构建war文件并将其部署在Linux上的tomcat中,那就没问题了。如果我使用 IntelliJ 在 Windows 中部署该项目,那就没问题了。

我已经从 Windows 版本导入了该项目。我已经从存储库重新下载了该项目并从头开始配置。我已经删除了 Maven 存储库并重新同步。我已经改变了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 中进行双重检查,即可正确提取“org.apache.commons.codec-1.9.0.jar”。所以我不知道为什么在 Linux 上会发生这种情况。

最佳答案

我发现了这个问题。这是 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

仅当使用分解的 Artifact 并直接从 IntelliJ 部署时才会出现此问题。

如果我从命令行构建它就可以正常工作。

如果我将 IntelliJ 构建为 war Artifact ,那么它就可以正常工作。

如果我部署为运行或调试配置并不重要,只有当我从 IntelliJ 部署为分解配置时才会出现此问题。

我已与 Jetbrains 联系,他们要求我提交错误报告。所以这是一个合法的问题。

感谢所有试图提供帮助的人。

关于java - Linux 上的 IntelliJ 使用错误的依赖版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916085/

相关文章:

java - 验证 WSDL URL 或禁止其暴露

java - Eclipse Maven 工作区解析看不到生成的类

c - posix_memalign 与 mmap 有何不同

maven - Tomcat 将 servlet 转换为 javax.servlet.Servlet 而不是 jakarta.servlet.http.HttpServlet

java - 使用mavenized Bootstrap的目的

java - Glassfish - java.lang.NoClassDefFoundError : org/primefaces/model/UploadedFile

java - 扩展实体类的非实体类

java - 如何在 Java 中使用流从两个数组创建映射?

linux - 如何将标准输出写入带有颜色的文件?

linux - 监控/dev/null 2>&1