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

Java构建问题-Java8Java11迁移

段干弘毅
2023-03-14

我们正在从Java8迁移到Java11。
我们有一个遗留项目Y,它依赖于另一个遗留项目X。
项目X没有来源,它只是大约300个罐子的集合。
构建是基于ant的,没有maven。

我现在无法使用JDK 11构建项目Y(既不在Eclipse中,也不在外部),因为它说“包org.w3c.dom可以从多个模块访问:,java.xml”

我在Eclipse中的一行中得到了这个错误,它确实导入了org。w3c。dom。文件

当我进行外部构建(使用ant,在Eclipse之外)时,我可以成功构建(使用与JDK 8下基本相同的build.xml)?!为什么只有月食在抱怨?!这是因为我在下面引用的javac错误吗。

我在这里阅读(这些与我的问题直接相关):

https://stackoverflow.com/a/53824670/2300597
包org.w3c.dom可以从多个模块访问:

但我仍然无法修复这些构建问题<我尝试了7-8种不同的方法,但没有任何帮助。

我认为冲突发生在来自这300个jars中的一些的org.w3c.dom包和JDK模块java.xml中的相同包之间。

奇怪的是org.w3c.dom.Document似乎不存在于这300个jar中的任何一个中,只是来自同一个包的其他类存在于jar中。

我陷入僵局,我看不到解决这个问题的方法。
我不能轻易更改项目X,因为它是多个遗留项目使用的共享库。
另一方面,我无法从项目Y的构建路径中删除java.xml模块。
所以我不知道如何处理这个问题。

难道没有办法说:好吧,先使用JDK中的类,然后使用JAR中的类(即使它们共享相同的包,但它们不是相同的类)。

修复这些错误的正确方法是什么?

共有1个答案

燕砚文
2023-03-14

从版本9开始,Java支持JPMS(Java平台模块系统)。

在Java平台模块系统中,不允许在多个模块中使用同一个包。因此,解决方案是找到导出此包的模块(JAR)。w3c。并删除其中的一个模块或包。

 类似资料:
  • 问题内容: 从某人的项目中,我收到此错误: 我有最新的JDK(jdk1.6.0_25)。据我了解,我可以执行以下操作之一: 下载J2SE-1.5环境以匹配项目。 编辑项目以与最新的JDK保持一致。 我怎样才能做到这一点? 问题答案: 这是一个很好的讨论: 如何在1.5兼容模式下使用JDK 1.6 基本上你应该 下载并安装1.5 JDK。(下载链接) 在Eclipse中,转到 窗口 → 首选项 →

  • 我是maven的新手,并用hello World创建了一个简单的maven项目。当我尝试运行Maven项目时,它会说:- [错误]尚未为此生成指定目标。必须指定有效的生命周期阶段或格式为:或:[:]:的目标。可用的生命周期阶段有:验证、初始化、生成源、过程源、生成资源、过程资源、编译、过程类、生成测试源、过程测试源、生成测试资源、过程测试资源、测试编译、过程测试类、测试、准备包、包、集成前测试、集

  • 我的应用程序(Postgres)中有7个不同的模式,我做了两次迁移来更改列,一次影响A模式,另一次影响公共模式。我想知道这种意外行为的原因。

  • 在我的xamarin Android应用程序上得到以下错误。请帮助我解决这个问题。 C:\程序文件(x86)\msbuild\xamarin\android\xamarin.android.common.targets(5,5):错误MSB4018:“LinkAssemblies”任务意外失败。xamarin.android.xamarinandroidException:错误XA2006:无法解

  • 我们正在将我们的项目从Java8迁移到Java11。其中一个API依赖于使用JAXB的库。正如我们所知,JAXB是从JAVA11中删除的,我们开始在库的POM中包含JAXB依赖项。 当我们运行API项目时,一切正常 mvn spring boot:运行 但是,当API部署在QA服务器中,并使用带有- java-jar Sample-api 3.0.0-SNAPSHOT. jar 当调用依赖于JAX

  • 问题内容: 我刚刚在Xcode 7 Beta中打开了我的旧项目。该代码在Xcode 6中可以正常工作,但是现在显示出许多错误。我不知道这些是什么。有人可以解释为什么发生这种情况,以及如何解决它吗?谢谢!这是代码 问题答案: 这是带有Swift 2.0的do / try / catch实现的updateAction()函数: