Java 创建可执行jar文件
我提取了一个包含xml、java类等的可执行jar文件。实际上,这个可执行jar文件是一个具有依赖关系的库。我需要修改这个库中某个类文件中的一行代码。我已经成功地编辑了类文件,现在我想把它重新打包到可执行jar中。如何做。只要把整个东西压缩回来,一个jar就是一个压缩文件Java 创建可执行jar文件,java,Java,我提取了一个包含xml、java类等的可执行jar文件。实际上,这个可执行jar文件是一个具有依赖关系的库。我需要修改这个库中某个类文件中的一行代码。我已经成功地编辑了类文件,现在我想把它重新打包到可执行jar中。如何做。只要把整个东西压缩回来,一个jar就是一个压缩文件 解压缩.jar 修改类 将整个结构重新压缩为.zip 将其重命名为.jar 好了 例如,您可以通过任务自动化它 正如下面的评论所说,您可以使用JDK安装附带的jar工具。 jar-xvf your.jar提取和jar-cvf
jar
工具。
jar-xvf your.jar
提取和jar-cvf your.jar输入文件
。
看
JAR的可执行性在于其结构中包含一个位于META-INF/MANIFEST.MF
中的文件,该文件描述什么是入口点类,如:
Manifest-Version: 1.0
Main-Class: foo.bar.FooBar
使用jar命令可以做到这一点 在命令提示下,获取所有类所在的根文件夹。和使用 跟随命令
jar -cvf myjarname.jar *
* means all the files and folders in that location
此外,请验证您是否具有可执行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
为什么要使用zip而不是jar工具?因为任何操作系统都带有zip/unzip,这是非常标准的。因为这样向OP解释似乎要简单得多,忽略了他并不真正知道罐子是如何工作的这一事实