2011-01-10 3 views
4

У меня есть класс, называемый org.jbpm.task.Comment в моем jbpm.jar.перезаписать класс java в jar

Однако это версия CR1, и в классе есть ошибка, которую я бы хотел, чтобы мое приложение перезаписывалось.

Это нормально только для того, чтобы иметь класс в моем проекте под com.jbpm.task, который называется Comment, и везде даже в других баночках это будет относиться к моей?

ответ

5

Файлы JAR - это только файлы ZIP. Используйте инструмент, такой как WinZip, чтобы извлечь все файлы из JAR, замените файл .class на свой, заново создайте ZIP-файл, например, WinZip, переименуйте его в .jar, перезапишите исходный JAR-файл.

Если у вас нет исходного источника в файле .class, вам нужно исправить, а затем использовать декомпилятор Java для создания источника .java для класса. В оригинале отсутствуют комментарии и т. Д., Но этого достаточно, чтобы исправить ошибки (например, некорректная нулевая проверка, так как у меня было несколько раз в некоторых продуктах.)

2

Я бы предложил использовать утилиту Zip, такую ​​как 7zip, чтобы открыть файл jar и заменить класс в файле jar последним.

0

Вам нужно будет убедиться, что ваша банка загружена до bpm.jar. В некоторых JREs банки находятся в одном месте, загружаются в алфавитном порядке.

+0

Я не спасти моего классифицироваться в банке - это в веб-приложении. – Dejell

1

Хорошо, что поведение не гарантируется. Из-за этого у меня был плохой опыт. Проверьте нижнюю нить SO. Если вы нацеливаете различную реализацию JVM, это может быть проблемой.

Xerces behaving differently on SUN JRE v1.5 and IBM J9 v1.5