使用包 java.util 的自定义类编译失败

问题描述 投票:0回答:2

我有一个自定义类,其包为 java.util。在java版本9之前,代码编译得很好,但是当我将java版本更改为11时,我面临着package存在于另一个模块中:java.base。我需要使用相同的包 java.util 来编译该类。 有人可以帮助纠正这个问题吗?预先感谢。

我尝试在 .mvn/jvm.config 中添加 --patch-module java.base=java.util,但这并没有解决问题。

java instrumentation java-platform-module-system
2个回答
0
投票

您遇到的错误表明您的代码库中有一个类,其包名称与

java.base
模块中的包冲突,该模块是 Java 标准库的一部分。具体来说,
java.util
java.base
中众所周知的包,其中包含各种实用程序类。这是我可以建议的事情:

  • 避免包名冲突
  • 使用唯一的包名称

进行必要的更改后,重新编译代码并再次测试。


0
投票

java.util
是为JDK提供的类保留的包。您不应将任何类放入以
java
/
javax
/
jdk
/等开头的任何包中。

唯一应该这样做的情况是,如果您正在为 JDK 做出贡献,在这种情况下,您将更改 JDK 本身而不会遇到该错误。

所以,只需将类放在其他地方即可。由于引入了模块,因此您不能拥有拆分包(代码由不同模块提供的包)。

© www.soinside.com 2019 - 2024. All rights reserved.