gpt4 book ai didi

java - 使用 Eclipse Transforms 将一个类替换为另一个类 : can't fix ClassFormatError

转载 作者:行者123 更新时间:2023-12-02 03:55:27 24 4
gpt4 key购买 nike

我正在使用Equinox Transforms将一个类替换为类路径上该类的自定义版本。转换机制似乎工作正常,我从转换器类的 public InputStream getInputStream(InputStream inputStream, URL TransformerUrl) 返回自定义类的 InputStream 。 p>

但是加载该类会导致 ClassFormatError 并显示消息截断的类文件。我能想象导致此问题的唯一原因是 Java 版本之间的不匹配,但我已尽我所能来消除该问题的根源,但无济于事。

我在“已安装的 JRE”首选项中从 Eclipse 中删除了除一个 JDK 之外的所有其他 JDK。我确保所有涉及的插件的执行环境都具有相同的 Java 版本,并且构建路径上的 JRE 指定为相同的执行环境。目标和产品执行环境的定义也相同。我在工作区中进行了 clean all 操作,并使用 -clean 多次重新启动了 Eclipse 和我的运行时工作台。毕竟,我仍然收到错误。

如果不是 Java 版本导致此错误,还会是什么? Equinox Transforms页面说它可以用来转换类资源。真的有人这么做过吗?

最佳答案

有一种更标准化的方法可以通过 WeavingHook 来替换 osgi 中的类。该钩子(Hook)应该注册为服务,并且能够动态增强类。

参见the WeavingHook Javadoc或者一个具体的例子 Aries Proxy ,它在 asm ( WovenProxyGenerator ) 的帮助下动态创建代理。

关于java - 使用 Eclipse Transforms 将一个类替换为另一个类 : can't fix ClassFormatError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35513452/

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