从Java 8升级到Java 11 - 包sun.util不存在

5

我正在尝试将一个应用程序从Java 8迁移到Java 11。当我在IntelliJ中尝试构建项目时,我遇到了一个package sun.util does not exist的错误?

有什么想法吗?

谢谢!


2
Oracle在2010年收购了Sun! - Elliott Frisch
2
依赖于sun.*类是非常危险和脆弱的,因为它们随时可能会发生改变或被删除。javac已经在很多版本中发出了警告。你正在使用哪个sun.util.*类?只是想知道是否有标准的API可以代替使用。 - Alan Bateman
1
我曾经使用 ResourceBundleEnumeration 来实现我们自己的 ResourceBundle。但是我已经找到了一种使用 new Vector<>(keySet).elements() 的方法,它似乎可以工作。 - pez
1个回答

14

com.sun.*sun.* 存放着内部的东西,通常情况下不应该被第三方应用(可能包括你的应用)使用。

自从Java 9引入模块化系统后,Oracle在编译时也会“保护”这些包。

所以明智的做法是在你的代码中消除对这些包的依赖。为什么要这样做?因为他们保留了更改此内容的权利,就像我之前说的那样,这被认为是内部的。

补充:

你可以尝试(但我不建议)应用这篇文章中的一些“解决”工具(请阅读“非法访问内部API”章节),但正如本文作者所述,最简单的方法是停止在你的代码中使用这些包,所以请把它作为第一选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接