Патч плагина с одним классом? - PullRequest
5 голосов
/ 07 октября 2011

Это моя ситуация: у нас есть сторонняя функция в нашей среде Eclipse.Функция содержит несколько плагинов.Плагин содержит кучу классов.Один из классов содержит ошибку.

Нам удалось найти решение этой ошибки, поэтому у нас есть рабочая версия класса с ошибкой.

К сожалению, этот плагин покрыт лицензионным соглашением длиной 55 страниц (IBM), поэтому я думаю, что вполне безопасно предположить, что о декомпиляции jar, обмене файлами классов, перекомпиляции и распространении юридически не может быть и речи.Я не эксперт по правовым вопросам, но я полагаю, что мы никак не можем вмешиваться в работу с файлами jar.

Таким образом, это означает, что у меня есть один файл класса, который я хочу загрузить вместо класса в плагине, это вообще возможно?

Это page предлагает использовать фрагменты, но для этого необходимо изменить манифест в плагине.

Этот вопрос имеет ту же проблему, что и я, но в этом случае есть доступ к источникукод, и он может построить плагин.

Этот blogpost показывает, как использовать функциональные исправления, но они требуют, чтобы я мог создать свой собственный плагин, который я не могу, поскольку у меня только один класс.

Ответы [ 2 ]

6 голосов
/ 07 октября 2011

Я бы не пытался использовать фрагмент.По моему опыту, самое чистое, что можно сделать, это использовать функциональный патч.Я успешно использовал исправления функций, чтобы делать именно то, что вы хотите сделать.Это не просто, но это надежно.Вам нужно сделать следующее.

  1. создайте плагин, который инкапсулирует ваш отдельный файл класса
  2. создайте патч функции, который включает в себя ваш новый плагин и который исправляет функцию, на которую вы нацелены.
  3. exportсвой патч и создайте метаданные p2 (для создания сайта обновлений).
  4. Установите в Eclipse с помощью менеджера установки
  5. Радуйтесь!

  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

Преимущество использования функцииПатч над фрагментом состоит в том, что любой может установить патч и заставить его работать, но с фрагментом дела обстоят сложнее, так как конечные пользователи должны испортить манифесты.

2 голосов
/ 07 октября 2011

Таким образом, это означает, что у меня есть один файл класса, который я хочу загрузить вместо класса в плагине, это вообще возможно?

Ваше первое предложение является ответом. Вы можете использовать фрагмент, но это требует изменения манифеста в плагине. В противном случае Eclipse не знал бы, какой класс загрузить.

Я предлагаю вам написать в IBM всю эту информацию, включая исправление. IBM должна выпустить исправление, которое решит вашу проблему.

В то же время вы можете использовать параметр фрагмента, который потребует от вас распаковать банку, добавить фрагмент, изменить манифест и упаковать банку. Является ли это законным, я не могу определить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...