Разве архив .jar больше не нужен, если мне нужно применить патч к библиотеке? - PullRequest
1 голос
/ 02 марта 2011

Я скачал файл jar Lucene.Я включил его в свой classpath для запуска моего приложения Lucene.

Однако теперь мне нужно применить патч.Должен ли я скачать исходники Lucene, применить патч и скомпилировать .. правильно?Я больше не могу использовать банку ...

спасибо

пс.Мне также нужно знать, как на самом деле применять патчи в Java ... что это за команда с терминала?

Ответы [ 4 ]

2 голосов
/ 02 марта 2011

Там может быть альтернативным подходом, но создание совершенно нового файла JAR будет вашим лучшим выбором, ИМО.Гораздо сложнее разобраться с тонкими проблемами, чем предоставить второй jar-файл с приоритетом только для некоторых классов и т. Д.

1 голос
/ 02 марта 2011

Джон Скит прав: лучше всего создать новую банку.Вы можете просто поместить дерево каталогов, содержащее новые файлы .class, в ваш classpath перед старым файлом jar, но это грязно и подвержено ошибкам.

Чтобы применить исправление, используйтеКоманда patch -p<n> <patch_file.txt в корневом каталоге исходного кода.

, где <n> - количество каталогов, которые нужно удалить из путей в патче, чтобы они соответствовали путям в дереве исходного кода - начинаются с 0.

1 голос
/ 02 марта 2011

Чтобы добавить класс или обновить существующий, вы будете использовать ту же команду jar, но с этой опцией -u.попробуйте jar -help из терминала.

1 голос
/ 02 марта 2011

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

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