这是我的情况:我们的Eclipse环境中有第三方功能。该功能包含几个插件。该插件包含一堆类。其中一个类包含一个bug。
我们已经找到了这个bug的解决方案,所以我们有一个带有bug的类的工作版本。
不幸的是,这个插件被一个55页长的EULA(由IBM)覆盖,所以我认为假设反编译jar,交换类文件,重新编译和分发是合法的,这是非常安全的。我不是法律专家,但我猜我们不能以任何方式篡改jar文件。
所以这意味着我有一个我想要加载的单个类文件而不是插件中的类,这是否可能?
这个page建议使用片段,但这需要修改插件中的清单。
此question与我有同样的问题,但在这种情况下,可以访问源代码,并且他可以构建一个插件。
这个blogpost显示了如何使用功能补丁,但是它们要求我能够构建自己的插件,因为我只有一个类,所以我不能这样做。
答案 0 :(得分:6)
我不会尝试使用片段。根据我的经验,最干净的事情是使用功能补丁。我已成功使用功能补丁来完成你想要做的事情。这并不简单,但它很强大。您需要执行以下操作。
飘柔!
(可选)默认情况下,功能修补程序仅针对目标功能的单个版本。因此,如果目标功能突破其版本号,则将无声地应用功能补丁。但是,可以放宽功能补丁的版本限制。此处详细介绍了此过程:http://aniefer.blogspot.com/2009/06/patching-features-part-2.html
更多信息:
http://aniefer.blogspot.com/2009/06/patching-features-with-p2.html http://aniefer.blogspot.com/2009/06/patching-features-part-2.html
在片段上使用功能补丁的好处是,任何人都可以安装补丁并使补丁正常工作,但是对于片段而言,事情更加困难,因为最终用户必须清除清单。
答案 1 :(得分:2)
所以这意味着我有一个我想要加载的单个类文件而不是插件中的类,这是否可能?
你的第一句话就是答案。您可以使用片段,但这需要修改插件中的清单。否则,Eclipse将不知道要加载哪个类。
我的建议是你用IBM提供所有这些信息,包括补丁。 IBM应该能够发布一个可以解决您问题的维护修复程序。
同时,您可以使用片段选项,这需要您解压缩jar,添加片段,修改清单以及重新打包jar。这是否合法是我无法确定的。