我有一个Jar文件,它使用Java1.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
文件:
因此,我的问题是:既然Jar中的文件已经编译成.class
文件,我如何替换Jar中的这些文件?
发布于 2018-08-26 01:03:56
您必须手动编译生成的.java-Files。如果代码有您无法提供的任何其他依赖项(例如,因为原始jar中没有提供这些依赖项),请尝试创建在编译时满足这些依赖项的伪类。然后,您可以使用7-zip (例如)手动更新您的JAR文件或者使用以下命令:
$ jar uf <JAR-File> <files-to-update...>
例如:
$ jar uf myjar.jar Java.tokens JavaLever.class JavaParser.class JavaTreeParser.class JavaTreeParser.tokens
https://stackoverflow.com/questions/52017648
复制相似问题