1. JAR 文件包
JAR( Java Archive File),即它的应用是与 Java 相关,JAR是 Java 的一种文档格式。JAR是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件。JAR 文件非常类似 ZIP 文件(准确的说,它就是 ZIP 文件,所以叫它文件包)。
JAR 文件与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。
JAR 文件与 ZIP 文件唯一的区别在于JAR 文件的内容中,包含了 META-INF/MANIFEST.MF 文件,它在生成 JAR 文件的时候自动创建的。
2. 创建可执行的 JAR 文件包
2.1 命令行方法
制作一个可执行的 JAR 文件包来发布程序是 JAR 文件包最典型的用法。
众所周知,Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,有人笑言:Java 是一种方便开发者苦了用户的程序设计语言。
但若开发者能够将可执行的 JAR 文件包交给用户,那么用户使用起来就很方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了。
创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,以 test 目录为例,命令如下:
jar cvfm test.jar manifest.mf test
这里test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m。
创建可执行的 JAR 文件包,仅靠指定 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项。这在 MANIFEST 中书写格式如下:
Main-Class: 可执行主类全名(包含包名)
例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类 (定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下:
Main-Class: test.Test <回车>;
这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可。
2.2压缩包方法
使用 WinZip 或者 WinRAR 等工具创建 JAR 文件,具体方法是:
使用 WinZip、WinRAR 等工具创建ZIP 压缩包,在ZIP 压缩包中添加一个包含 MANIFEST 文件的 META-INF 目录即可。对于使用 jar 命令的 -m 参数指定清单文件的情况,只需要将这个 MANIFEST 按需要修改即可。
2.3 Maven命令方法
若使用Maven管理代码,则可以使用Maven命令package进行Jar发布,同时会生成源码的JAR包,均保存在target目录中。
还可以通过install发布到Maven的资源库中共享。
2.4 FatJAR工具方法
安装:
下载fatJar插件,解压缩后是一个.../plugins/,把plugins下面的文件夹拷贝到eclipse的plugins下,重新启动Eclipse ,Windows=>prefernce=>看到fat jar preference,就说明已经安装成功了。
缺点:
FatJAR打包方式的缺点是所打包中包含项目中引入的第三方JAR包,因此所打JAR包比较大。
2.5 Eclipse工具方法
在Eclipse中,File=>Jexport=>Jar File 即可。
若想把src附属的资源一起打包,必须使用FatJar => export..=>FatJar。
3. JAR 文件包的解压
Windows 下的 WinZip、WinRAR 等和 Linux 下的 unzip 等是常用的解压缩工具。使用 WinZip 和 WinRAR 等来解压的优势是直观、方便。使用 unzip解压时可以使用 -d 参数指定目标目录。
在解压一个 JAR 文件的时候是不能使用 jar 的 -C 参数来指定解压的目标的,因为 -C 参数只在创建或者更新包的时候可用。那么需要将文件解压到某个指定目录下的时候就需要先将这具 JAR 文件拷贝到目标目录下,再进行解压,比较麻烦。如果使用 unzip,就不需要这么麻烦了,只需要指定一个 -d 参数即可。如:
unzip test.jar -d dest/
4. JAR 文件包的反编译
JD分为JD-GUI、JD-Eclipse两种运行方式,JD-GUI是以单独的程序的方式运行,JD-Eclipse则是以一个Eclipse插件的方式运行。
以JD-GUI为例:
1.)打开软件jd-gui,导入需要打包的jar文件
2.)自动生成的jar的源码
5. JAR 文件包的运行
5. 1 通过BAT运行 JAR
通过bat文件运行jar包程序时,通过jar命令或集成开发环境的打包工具,利用manifest.mf文件将.class文件打成可执行jar包时,如果程序引用大量第三方的jar包,那么会使得manifest.mf文件的编写变得很繁琐,并且可执行的jar需要运行机器上装有jre,考虑通过编写bat文件运行jar包程序。
过程如下:
1 对自己编写的java文件,对其编译,将class文件打成jar包(包名eg DMManager.jar)
2 新建文件夹,作为应用程序的home文件夹(文件夹名eg DMManager)
3 在DMManager文件夹下建立子文件夹lib、bin、jdk
4 将DMManager.jar放入lib下
5 在lib下新建子文件夹other
6 将程序所需的第三方jar包放至other下
7 处理jdk文件夹,jdk文件夹是个可选项,如果要使得程序的执行不依赖与目标机是否装有jre运行环境,那么需将本地JAVA_HOME文件夹下的内容拷贝至该文件夹下
8 编写bat文件(*.bat)
a 利用目标机的jre(第7步可省)
@echo off
cd ..
set APP_HOME=%cd%
cd bin
start "" "%JAVA_HOME%\bin\javaw.exe" -classpath "%APP_HOME%\lib\DMManager.jar" -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext";"%APP_HOME%\lib\other" -Xms256m -Xmx512m my.package.name.Main
b 利用自身的jre(第7步不能省)
@echo off
cd ..
set APP_HOME=%cd%
set JAVA_HOME=%APP_HOME%\jdk
cd bin
start "" "%JAVA_HOME%\bin\javaw.exe" -classpath "%APP_HOME%\lib\DMManager.jar" -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext";"%APP_HOME%\lib\other" -Xms256m -Xmx512m my.package.name.Main
9 将*.bat文件放至bin下
10 双击*.bat即可运行
5. 2 Linux下运行 JAR
可将jar包上传至linux /opt/test/目录下:
1)以crontab方式运行该jar包(定时任务)
crontab -e
00 15 * * * /home/sswitch/web/j2ee/jdk/bin/java -Dfile.encoding=GBK -jar /opt/test/test.jar > /dev/null
则运行jar包时,在命令后加上encoding参数,如下:
java -Dfile.encoding=GBK
其中etc/sysconfig/i18n文件内容如下:
#----------------
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312.zh_CN"
SUPPORTED="en_US.UTF-8:en_US:en:zh_CN.UTF-8:zh_CN:zh:fr_FR.UTF-8:fr_FR:fr:de_DE.UTF-8:de_DE:de:ja_JP.UTF-8:ja_JP:ja:es_ES.UTF-8:es_ES:es"
SYSFONT="latarcyrheb-sun16"
#----------------
2)以后台方式运行该jar包
nohup java -jar /opt/test/test.jar&
查看该jar包是否已运行:ps -ef | grep java
相关推荐
绿色免安装版的jar反编译工具无需安装过程,下载后直接运行,节省了系统资源,方便在各种环境中快速使用,尤其适合开发者的移动办公需求。 总之,jar反编译工具是Java开发者的重要辅助工具,它们可以帮助我们洞察...
在IT行业中,开发人员经常会遇到需要对已有的jar包或class文件进行反编译和调试的情况,以便理解其内部逻辑或修复bug。Eclipse作为一款流行的Java集成开发环境(IDE),提供了丰富的插件支持,使得这个过程变得相对...
首先,`dex2jar`是一个开源项目,它由Pau1o典当创建并维护,目的是为Android开发者提供一个简单的方法来反编译.dex文件。`dex2jar-2.0`是其较新的版本,相比早期版本,它可能包含了一些改进和修复,以提高转换效率和...
这将在当前目录下创建一个新的文件夹,其中包含了反编译后的源代码和资源文件。 2. **Dex2jar**:在Android应用中,Java代码被编译成Dalvik字节码(.dex)格式。Dex2jar工具用于将.dex文件转换为Java字节码(.jar)...
4. **反编译流程**:通常,反编译APK涉及以下步骤:首先,使用工具如unzip解压APK;然后,用Apktool解析XML和资源文件;接着,使用dex2jar处理.dex文件;最后,通过JD-GUI或JAD反编译Java字节码。 5. **使用目的**...
它不仅可以解压APK文件,还能反编译资源文件(如XML布局、图片等)和DEX文件,将其转化为人类可读的格式。Apktool提供了重建APK的能力,这意味着开发者可以修改源代码、资源文件,然后重新打包生成新的APK。这对于...
- **优化**:最后,使用dex2jar等工具将Java类文件转换回Dex格式,并可能用ProGuard进行混淆,以增加反编译的难度。 2. **jd-gui**: jd-gui是由Jochen Hoenicke开发的一个图形界面工具,用于快速查看Java字节码...
2. 在命令行中,使用`apktool d`命令,指定要反编译的APK文件路径,这将在当前目录下创建一个与APK同名的目录,包含所有解包的资源和文件。 3. 可以在解包后的目录中查看XML布局文件、图片资源等,也可以进行修改。 ...
dex2jar是一款在Android开发领域常用的反编译工具,它能够将Android应用的.dex(Dalvik Executable)文件转换成Java字节码的.jar文件,从而使得开发者可以查看和分析APK中的源代码。这对于逆向工程、安全审计以及...
2. **使用jad进行反编译**:接下来使用jad.exe对解压出来的`.class`文件进行反编译。执行以下命令: ```bash jad.exe -r -ff -d src -s java *.class ``` 这里解释一下这些参数的意义: - `-r`:保留原有的目录...
2. **解压文件**:将"apk反编译for macOS.zip"解压到一个合适的目录,例如`~/Documents/反编译工具`。 3. **移动apktool**:将apktool目录下的`apktool.jar`移动到`/usr/local/bin`目录,这样可以在任何地方通过...
这个压缩包提供了两个重要的工具:Apktool和dex2jar,它们是Android反编译流程中的关键组件。 首先,让我们详细了解Apktool。Apktool是一款开源的Android APK反编译工具,由布拉德·斯通(Brandon Stein)开发。它...
3. **复制或链接插件**:将解压后的反编译工具相关的JAR文件复制到`plugins`目录,或者在`dropins`目录创建一个指向JAR文件的链接。 4. **重启MyEclipse**:完成上述步骤后,重启MyEclipse以使新安装的插件生效。 5....
这将在当前目录下创建一个与APK文件名相同的目录,其中包含了反编译后的资源文件和AndroidManifest.xml。 在实际应用中,开发者可能需要利用这些工具来理解APK的工作原理,查找安全漏洞,或者对第三方应用进行二次...
在Linux系统上反编译APK,首先需要安装一些必要的工具,包括Java Development Kit (JDK)、apktool、dex2jar和JD-GUI。JDK是Java编程的基础,apktool用于解压和重建APK,dex2jar可以将Dalvik Executable (.dex)文件...
Dalvik字节码是Android应用运行时使用的格式,而Java字节码则更容易被反编译工具如JD-GUI或JD-Core理解。通过将.dex文件转换为.jar,我们可以使用Java反编译器来查看原始的Java源代码,尽管可能无法完全恢复到与原始...
这将创建一个新的目录,其中包含反编译后的APK资源。 **步骤四:使用dex2jar转换.dex文件** 首先,下载并解压dex2jar工具(可能需要从其官方网站或GitHub仓库获取)。在终端中进入dex2jar目录,然后运行: ```bash...
本主题将详细介绍如何利用"Apk反编译打包后版本"中提供的工具——apktool、dex2jar和jd-gui.exe来完成这一过程。 首先,我们来了解下这些工具的作用: 1. **apktool**:这是一个强大的开源工具,主要用于反编译APK...
《dex2jar:Android应用的反编译利器》 在Android开发领域,有时我们需要对APK文件进行逆向工程,以便理解其内部工作原理、调试或优化代码。dex2jar工具便是这样的利器,它能够将Android应用的Dalvik Executable ...
标题提到的“反编译工具”主要用于查看和理解Java的jar包,这在软件开发、逆向工程、代码学习以及调试过程中非常实用。让我们深入探讨一下这个话题。 首先,我们需要了解什么是jar包。在Java编程语言中,jar(Java ...