我已经提取了一个包含 xml、java 类等的可执行 jar 文件。实际上这个可执行 jar 文件是一个具有依赖关系的库。我需要在这个库的一个类文件中修改一行代码。我已经成功编辑了类文件,现在我想将它重新打包到可执行的 jar 中。怎么做。
问问题
4059 次
3 回答
6
只需将整个内容压缩回去,jar 只是一个 zip 文件。
- 解压 .jar
- 修改类
- 将整个结构重新压缩为 .zip
- 将其重命名为 .jar
- 你去吧。
例如,您可以使用ant<jar>
任务将其自动化。
正如下面的评论所说,您可以使用jar
JDK 安装附带的工具。
jar -xvf your.jar
提取和jar -cvf your.jar inputfiles
。请参阅文档。
使 JAR 可执行的原因在于它在其结构中包含一个文件,该文件META-INF/MANIFEST.MF
描述什么是入口点类,例如:
Manifest-Version: 1.0
Main-Class: foo.bar.FooBar
于 2012-10-26T06:35:27.027 回答
2
使用 jar 命令你可以做到这一点
采取命令提示符并获得所有类的根文件夹。并使用以下命令
jar -cvf myjarname.jar *
* means all the files and folders in that location
于 2012-10-26T06:39:27.697 回答
0
此外,验证您是否具有可执行 jar 的文件关联。如果不这样做,您可以使用此批处理文件创建此关联:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: this script creates a file association for executable .jar files
ECHO Creating .jar file association...
ECHO JAVA_HOME is %JAVA_HOME%
IF NOT DEFINED JAVA_HOME GOTO :FAIL
REG ADD "HKCR\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKCR\jarfile\shell" /ve /f
REG ADD "HKCR\jarfile\shell\open" /ve /f
ECHO REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%**" /f
REG ADD "HKLM\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
ECHO Finished creating .jar file association for executable .jar files.
PAUSE
GOTO EOF
:FAIL
ECHO Script failed. JAVA_HOME not defined.
PAUSE
于 2012-11-25T19:26:43.850 回答