gpt4 book ai didi

java - 迁移到 java11 ClassCastException

转载 作者:行者123 更新时间:2023-12-02 01:39:42 25 4
gpt4 key购买 nike

我有一个在我的 java 程序中使用过的库。

它包含下一行:

URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();

它在 java8 上运行正常,但是当我尝试在 java11 上启动它后,我得到了 ClassCastException

java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader

是否可以在不修改库的情况下解决这个问题? AFAIK,Java 应该向后兼容,所以也许一些命令行参数可能有帮助?

谢谢

最佳答案

Java 是向后兼容的。正在查看ClassLoader.getSystemClassLoader() in Java 8显示它返回一个 ClassLoader 实例,而不是一个 URLClassLoader 实例。 ClassLoader.getSystemClassLoader() in Java 11 也是如此。 。因此,永远无法保证 ClassLoader.getSystemClassLoader() 返回 URLClassLoader

<小时/>

据我所知,没有办法将ClassLoader转换为URLClassLoader。解决此问题的唯一正确方法是写信给库的维护者,告诉他们他们依赖于某些实现细节,他们不应该这样做,并要求他们解决问题。如果这是一个简单的修复,并且该项目是开源的,您可以 fork 该项目,修复问题并创建拉取请求。

关于java - 迁移到 java11 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54618721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com