首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java构建问题- Java 8到Java 11迁移

Java构建问题- Java 8到Java 11迁移
EN

Stack Overflow用户
提问于 2022-01-17 15:38:31
回答 1查看 579关注 0票数 0

我们正在从Java 8迁移到Java 11。

我们有一个遗留项目Y,它依赖于另一个遗留项目X。

项目X没有来源,它只是一个大约300个罐子的集合。

构建是基于蚂蚁的,没有maven。

我现在不能用JDK 11 (既不在Eclipse中,也不在外部)构建项目Y。

因为它说“包org.w3c.dom可以从多个模块访问:,java.xml"

在做import org.w3c.dom.Document;的行中,我在Eclipse中得到了这个错误

--当我做外部构建时(使用ant,在Eclipse之外)--我可以成功地构建(与JDK 8下的build.xml基本相同)?!为什么只有Eclipse才会抱怨呢?!是因为我在下面引用的javac bug。

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

https://stackoverflow.com/a/53824670/2300597

The package org.w3c.dom is accessible from more than one module: , java.xml

http://mail.openjdk.java.net/pipermail/jigsaw-dev/2018-December/014077.html

但我仍然无法解决这些构建问题。

我尝试了7-8种不同的东西,但没有任何帮助。

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

奇怪的是,org.w3c.dom.Document似乎没有出现在这300个罐子中,只是同一个包中的其他类都出现在jars中。

我陷入僵局,我看不出有什么办法解决这个问题。

我不能轻易地更改项目X,因为它是多个遗留项目使用的共享库。

另一方面,我不能从项目Y的构建路径中删除java.xml模块。

所以我不知道该怎么处理。

难道没有什么方法可以这么说吗:好的,先使用JDK中的类,然后再使用JAR中的类(尽管它们共享相同的包,但它们不是同一个类)。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 15:59:12

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70743912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档