当前位置: 首页 > 知识库问答 >
问题:

EclipseJava11类路径仅与Maven相比不工作

终子昂
2023-03-14

将一个旧的ERP系统迁移到JPMS是一个很大的问题(Java11Eclipse找到了自动模块,Maven没有),所以我决定首先尝试用Java11替换Java8,但通过不引入任何模块信息来保持类路径上的所有内容。java文件。这实际上进行得相当顺利;Maven编译这个程序没有问题,生成的应用程序也从命令行启动。

但当我将Maven项目导入Eclipse2019-03时,它抱怨a.o.java。xml包,例如此导入:

import javax.xml.namespace.QName;

这是有意义的,因为JRE是模块化的,那些类在java.xml模块中,我不包括在内。但是为什么Maven在J11下正确编译应用程序呢?

我想我需要告诉Eclipse为这个项目“-addmodules=ALL-SYSTEM”,但我不确定在哪里或者如何。我已经尝试将构建路径/库中的所有JDK/JRE模块从隐式移动到显式,但这没有帮助。

共有2个答案

陈寒
2023-03-14

"尝试"Open Type"在类路径的罐子中找到javax.xml.namespace.QName的任何副本,并排除pom.xml"这也是我问题的解决方案。在我的例子中,我必须从轴中排除“org.apache.axis”,并为javax.xml.rpc添加一个单独的依赖项

<dependency>
            <groupId>axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
          <exclusions>
                <exclusion>
                    <groupId>axis</groupId>
                    <artifactId>axis-wsdl4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.axis</groupId>
                    <artifactId>axis-jaxrpc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1.2</version>
        </dependency>
盖锐
2023-03-14

您可能在类路径上有一些冗余的XMLAPI JAR,javac(错误地)没有因为JDK-8215739而抱怨,但是Eclipse在错误536928之后已经(正确地)抱怨了

在运行时,JVM似乎忽略了类路径上已经出现在命名模块中的包,因此javac的行为实际上与此一致。

要解决您的问题:请尝试“opentype”查找javax的任何副本。xml。命名空间。QName在类路径上的JAR中,并在pom中排除这些依赖项。xml

 类似资料:
  • 我正在尝试为我正在编写的程序使用其他JAR。 我安装了所有必需的文件,并将它们添加到类路径中,但Java无法识别这些包。 我在jar位置之间加了分号,但Java无法识别jar中的包。为什么会这样? 例如,我的类路径如下所示: .; C:\Program Files(x86)\Java\jre7\lib\exts\QTJava.zip;C:\用户\JOE\下载\aseymock-3.2\asymoc

  • 环境: Eclipse Juno Junit 4.11 maven 3.0.4 问题: 我相信在Eclipse的junit运行器中运行单元测试时遇到了类加载问题。我的具体问题源于这段代码: 上面的代码最终将使用一个类的名称调用,该类位于maven依赖项中(依赖项只是一个java bean的集合)。当我运行mvn测试时,这段代码成功运行,但是,如果我使用eclipse运行junit测试,我会收到一个

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 我正在工作的(遗留)项目很大,有很多依赖项,现在我试图将其更新到Java9 实际上,上面的大量JAR包含220个JAR文件,因此超过了最大命令行长度。我尝试在没有帮助的情况下通过提供显式的-dmaven.repo.local=c:\y参数来缩短它。此外,我还试图通过给cxf-java2ws-plugin提供未记录的配置来覆盖类路径,但这似乎只是追加到类路径 有人知道该怎么做吗?提前致谢

  • 我有一个完全干净的项目,利用。一切都按计划进行。已加载SCSS文件,但字体路径失败。 错误消息: 资产/fonts/DIN/DIN\u替换\u粗体\u 1-webfont。ttf输入/~/css加载器?{“最小化”:false,“源映射”:false}/~/vue加载程序/库/样式编译器?{“vue”:true,“id”:“data-v-0312694b”,“scoped”:true,“hasIn

  • 我已经寻找了一段时间的实际示例,以了解Maven获取资源的相对路径最佳实践,但我感到困惑,希望您能支持我了解什么是获取资源的最佳实践,以及如何应用于具体示例: 具体示例: 结构假设我有以下结构,并试图从文件夹规划中的类中获取资源(位于资源中),所以基本上我试图创建一个与maven执行一致的相对路径的字符串: 类RunCapacityPlanning,它获取我当前使用的以下快速修复程序的资源 上面的