我正在将Java Swing应用程序从Java 8迁移到Java 10,而我没有Java Swing应用程序的源。
我首先遇到:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceException
我成功解决了哪一个。如many posts on SO和其他站点中所述,自Java 9起,模块已从JDK中移出。这意味着我必须将依赖关系重新带回类路径中才能运行该应用程序。
现在我得到:
java.lang.NoClassDefFoundError: sun/net/www/protocol/https/DefaultHostnameVerifier
但是我似乎找不到这种依赖关系在哪里。我发现有一个post建议更改代码,但这对我来说不是一个选择。我还能尝试什么?
答案 0 :(得分:1)
sun
包类始终被视为内部JDK实现细节,而不应在应用程序代码中使用。现在Project Jigsaw已将JDK模块化,该类不再可用,这是一件好事。这不是什么新鲜事物,请参见Why Developers Should Not Write Programs That Call 'sun' Packages:
sun。*软件包不是受支持的公共接口的一部分。 不能保证直接调用sun。*软件包的Java程序可以在所有与Java兼容的平台上运行。实际上,即使在同一平台上的将来版本中,也无法保证此类程序可以正常工作。
解决方案是将应用程序代码更改为与JDK 10兼容。如果无法更改应用程序代码,则应保留在JDK 8上。