前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

JAR的创建、解压、运行、反编译 - - ITeye技术网站 首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 招聘 搜索 您还未登录 ! 登录 注册 aoyouzi 博客 微博 相册 收藏 留言 关于我 aoyouzi JAR的创建、解压、运行、反编译 博客分类: 技术总结 JARJAR创建JAR解压JAR运行JAR反编译 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 文件包的反编译 将Jar文件反编译为源码工具博主推荐:JD。 ? ? ? 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 分享到: Perf4J介绍及使用、集成 | JAR综述 2013-04-07 13:00 浏览 218 评论(0) 分类:研发管理 相关推荐 评论 发表评论 您还没有登录,请您登录后再发表评论 aoyouzi 浏览: 19701 次 性别: 来自: 北京 最近访客 更多访客>> dylinshi126 oldrat q117588751 cheng__2011 文章分类 全部博客 (242) 《我的大学》之考研总结 (5) 《科苑行》总结节选 (2) 研究报告 (7) 奇文分享 (25) 技术总结 (171) 企业管理 (32) 企业产品 (2) 社区版块 我的资讯 (0) 我的论坛 (0) 我的问答 (0) 存档分类 2014-01 (1) 2013-12 (45) 2013-11 (35) 更多存档... 评论排行榜 定时任务Java编写综述之Quartz理论(2) Android实现左右滑动指引效果 Android学习笔记之5选择部件 Android调试常见问题新总结 最新评论 boxhelotus: you are a great learner!!! Android调试常见问题新总结 boxhelotus: great~~~ Android实现左右滑动指引效果 boxhelotus: ... Android学习笔记之5选择部件 aoyouzi: ? 定时任务Java编写综述之Quartz理论(2) elfasd: 东东。。。 定时任务Java编写综述之Quartz理论(2) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 &copy; 2003-2014 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ]