sách gpt4 ai đã đi

java - 重写 Java 中的类

In lại 作者:行者123 更新时间:2023-11-30 04:16:57 26 4
mua khóa gpt4 Nike

我可以使用 ClassLoader 的 DefinePackage 覆盖 jar 内的某些包吗?

例如,应用程序当前包含 abc.jar 中的“javax.xml.bind”。如果我调用 ClassLoader.definePackage(def.jar),其中 def.jar 包含 javax.xml.bind 的另一个版本,我可以将整个应用程序的类路径替换为指向 def.jar 的类路径吗?谢谢。

1 Câu trả lời

不,您绝对不能KHÔNGsử dụngClassLoader.definePackage来“覆盖”jar 内的某些包。

如果我理解正确的话,你想让你的 JVM 从 def.jar 加载 javax.xml.bind 下的任何类,而所有其他类则从 abc.jar 加载。在这种情况下,您可以(按照我个人的偏好顺序):

1) 在 CLASSPATH 中将 def.jar 放在 abc.jar 之前。这要求 def.jar 中不存在您要从 abc.jar 加载的类。

2) 解压缩 def.jar、abc.jar 或两者,并删除任何冲突的类,因此哪个 jar 在 CLASSPATH 中排在第一位实际上并不重要。然后重新压缩它们。或者您可以只在一个 jar 上执行此操作,然后将其放在另一个 jar 之前。

3) 使用可配置的类加载器(抱歉,据我所知没有公共(public)领域的类加载器;如果您找到了,请告诉我)。对于操作系统项目来说,这可能是一个有趣的话题,除了几个具有类似(但更广泛)目标的举措已经在进行中,其中一些是该语言的核心。

4)为此目的创建一个类加载器,可能会扩展默认类加载器。

关于java - 重写 Java 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138823/

26 4 0
Bài viết được đề xuất: Thuật toán C++ để gửi email bằng Outlook
Bài viết được đề xuất: c++ - 在 C++ 中从 PATH 导入 Python 脚本
Bài viết được đề xuất: android - 如何在 Android 手机的第一个屏幕上显示一条消息?
Bài viết được đề xuất: c++ - 获取回调函数的返回类型
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com