Обновите файлы Java внутри Jar, которые уже скомпилированы в файлы .class - PullRequest
0 голосов
/ 25 августа 2018

У меня есть файл Jar, который использует грамматику Java 1.5 для анализа кода Java.Парень, который его кодировал, использовал Java.g, JavaTreeParser.g и ANTLR для генерации этих пяти файлов: Java.tokens, JavaLexer.java, JavaParser.java, JavaTreeParser.java и JavaTreeParser.tokens.Это файлы, которые выполняются в приложении.

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

Я использовал команду java -jar antlr-complete-3.5.2.jar Java.g JavaTreeParser.g, и она сгенерировала эти пять файлов.

Теперь я хочу обновить Jar этими файлами.Я думал об использовании 7-zip для этого, но когда я открываю папку, в которой эти пять файлов должны быть, JavaLexer.java, JavaParser.java, JavaTreeParser.java «преобразуются» в связку .class файлов:

enter image description here

Итак, мой вопрос: как я могу заменить эти файлы в Jar, так как файлы в Jar уже скомпилированы в .class файлы

1 Ответ

0 голосов
/ 25 августа 2018

Вам нужно будет вручную сгенерировать .java-файлы. Если в коде есть какие-то дополнительные зависимости, которые вы не можете предоставить (например, потому что они не представлены в вашем исходном jar-файле), попробуйте создать фиктивные классы, которые удовлетворяют зависимостям во время компиляции. Затем вы можете обновить JAR-файл вручную, используя 7-zip (например) или с помощью следующей команды:

$ jar uf <JAR-File> <files-to-update...>

например:.

$ jar uf myjar.jar Java.tokens JavaLever.class JavaParser.class JavaTreeParser.class JavaTreeParser.tokens
...