如何将jar打成exe文件,并且可以c 调用cmd打开exe文件第三方jar包

史上最简单教程:向第三方jar包注入自己的代码 - 推酷
史上最简单教程:向第三方jar包注入自己的代码
注意:全文极短,适用于各种反编译小白,程序小白,读完仅需2分钟!
我们经常使用第三方库,但当我们遇到一些个性化需求,第三方库没有预留接口的时候,怎么办?
比如我们项目中用到友盟的社会化分享组件,但是友盟的分享对话框实在是丑!而他们又没有留下足够的接口支持我的个性化需求,比如我想给对话框加个圆角背景,库中并无该接口,怎么办?
修改第三方jar包,注入代码?但是我是一个反编译小白,唯一会用的反编译工具就是gui,怎么办?
下面以“给友盟分享对话框加圆角背景”为例,介绍 如何简单快速的将自己的代码注入第三方jar包中
首先我们要看第三方jar包的源码,定位到具体需要修改的文件位置。
用gui看了看源码,对话框的构造过程在 umeng_social_shareboard.jar 中 UMActionFrame 文件的 createShareboardLayout 方法里,整个过程都是代码编写。
而UI的个性化配置,是在 ShareBoardConfig 文件中:
boolean mTitleV
String mTitleT
int mTitleTextC
boolean mCancelBtnV
String mCancelBtnT
int mCancelBtnC
int mCancelBtnBgC
int mCancelBtnBgPressedC
int mShareboardP
int mShareboardBgC
Drawable mCancelButtonBgD
int mMenuBgS
int mMenuBgShapeA
int mMenuBgC
int mMenuBgPressedC
int mMenuTextC
int mMenuIconPressedC
我们可以看到,只有按钮的drawable,其中并没有背景drawable。
也就是说,我只需要在 ShareBoardConfig 中添加新的成员变量— Drawable mShareboardBgDrawable ,然后添加接口,再在 UMActionFrame 中完成添加背景的操作就行了。
好,下面开始干!
接下来的操作,真的真的没有技术含量!
用 gui 打开 umeng_social_shareboard.jar 包,然后 File --& Save All Sources 保存反编译后的文件,得到一个压缩包 umeng_social_shareboard.src.zip ,将文件解压出来后,用eclipse新建一个工程,导入这些文件。
没错,全是错,因为没有依赖包,下面将友盟sdk中的相关jar包导入到工程下libs文件中:
这次世界清静了!
然后我们就可以改改改了,先在 ShareBoardConfig 中添加 mShareboardBgDrawable :
再添加接口:
然后在 UMActionFrame 中添加具体实现:
如此便完成了全部操作,我就说吧,没有任何技术含量!
接下来就是重新生成jar包了,右键工程–&Export,选择jar:
我们只需要java代码,所以勾掉多余的文件:
确定,一个崭新的被hack过的jar包诞生了,替换原来的jar包,现在是不是可以“为所欲为”了?
当然这里不是教唆大家去侵犯别人的成果,只是说在我们工作当中,如果可以用最小的代价完成需求,何乐而不为呢?
最后再问一句:还有比这更简单的操作吗?
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致用ant打包可运行的jar文件 (将第三方jar包放进你自己的jar包)
我的图书馆
用ant打包可运行的jar文件 (将第三方jar包放进你自己的jar包)
用ant打包可运行的jar文件(将第三方jar包放进你自己的jar包)
Jar文件的运行方式直接双击或者
Java –jar xxxx.jar
要能直接运行必须在jar包下的MANIFEST.MF文件中添加入口类,就是带Main函数的。
例如:Main-Class: com.safx.processor.Starter
在MANIFEST.MF文件中添加了Main-Class这个属性,在运行jar包的时候默认就调用了这个类作为入口类。
下面列举用ant打包jar文件的3中方式:
1. 解压第三方jar包然后和你的class文件一起打包进jar文件
[html] &style="font-family:SimSfont-size:12"&version="1.0"&encoding="UTF-8"&standalone="no"&&&default="create_run_jar"&name="Create&Runnable&Jar&for&Project&SeleniumAutomation-3.1"&&&&&&&&&&&&&&&&&&&name="create_run_jar"&&&&&&&&&&&destfile="C:/Users/topcat/Desktop/111.jar"&filesetmanifest="mergewithoutmain"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&name="Main-Class"&value="com.safx.processor.Starter"&&&&&&&&&&&&&&&&&&&name="Class-Path"&value="."&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dir="D:/SeleniumAutomation/SAFX-3.1/bin"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/jaxen-1.1-beta-6.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/log4j-1.2.16.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/mail.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/testng-6.0.1.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/dom4j-1.6.1.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/guava-r09.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/jxl.jar"&&&&&&&&&&&&&&&excludes="META-INF/*.SF"&src="D:/SeleniumAutomation/SAFX-3.1/lib/selenium-java-2.21.0.jar"&&&&&&&&&&&&&&&&&&&&&&
上面的&filesetdir="D:/SeleniumAutomation/SAFX-3.1/bin"/& 这一段是 我自己的class文件路径。
我们的Main-Class属性设置为 com.safx.processor.Starter
上图就是我们用第一中方法打包成jar文件之后所有的内容。
2.将第三方jar直接打包进我们要生成的jar包
[html] &style="font-family:SimSfont-size:12"&version="1.0"&encoding="UTF-8"&standalone="no"&&&default="create_run_jar"&name="Create&Runnable&Jar&for&Project&SeleniumAutomation-3.1&with&Jar-in-Jar&Loader"&&&&&&&&&&&&&&&&&&&name="create_run_jar"&&&&&&&&&&&destfile="C:/Users/topcat/Desktop/1212.jar"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&name="Main-Class"&value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"&&&&&&&&&&&&&&&&&&&name="Rsrc-Main-Class"&value="com.safx.processor.Starter"&&&&&&&&&&&&&&&&&&&name="Class-Path"&value="."&&&&&&&&&&&&&&&&&&&name="Rsrc-Class-Path"&value="./&jaxen-1.1-beta-6.jar&log4j-1.2.16.jar&mail.jar&testng-6.0.1.jar&dom4j-1.6.1.jar&guava-r09.jar&jxl.jar&selenium-java-2.21.0.jar"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&src="jar-in-jar-loader.zip"&&&&&&&&&&&&&&&dir="D:/SeleniumAutomation/SAFX-3.1/bin"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="jaxen-1.1-beta-6.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="log4j-1.2.16.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="mail.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="testng-6.0.1.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="dom4j-1.6.1.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="guava-r09.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="jxl.jar"&&&&&&&&&&&&&&&dir="D:\SeleniumAutomation\SAFX-3.1\lib"&includes="selenium-java-2.21.0.jar"&&&&&&&&&&&&&&&&&&&&
上边的ant脚本相比第一中方法多了Rsrc-Main-Class和Rsrc-Class-Path这两个属性。
使用这种方法,我们需要额外引进一个jar-in-jar.zip文件。
&zipfileset src="jar-in-jar-loader.zip"/&
这个是eclipse 自带的,在打包完成之后,会将jar-in-jar.zip解压到你的jar包中
Jar-in-jar.zip& 包含了上面这些class,写class在
org.eclipse.jdt.internal.jarinjarloader &&包下
上图就是我们用第二中方法打包之后jar包里所有的文件。
上图就是我们用第二中方法打包之后jar包里所有的文件。
3.拷贝第三方jar到一个文件(如 lib文件夹),这个文件夹与我们自己的jar文件在在同级目录
[html] &style="font-family:SimSfont-size:12"&version="1.0"&encoding="UTF-8"&standalone="no"&&&default="create_run_jar"&name="Create&Runnable&Jar&for&Project&SeleniumAutomation-3.1&with&libraries&in&sub-folder"&&&&&&&&&&&&&&&&&&&name="create_run_jar"&&&&&&&&&&&destfile="C:/Users/topcat/Desktop/333.jar"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&name="Main-Class"&value="com.safx.processor.Starter"&&&&&&&&&&&&&&&&&&&name="Class-Path"&value=".&lib/jaxen-1.1-beta-6.jar&lib/log4j-1.2.16.jar&lib/mail.jar&lib/testng-6.0.1.jar&lib/dom4j-1.6.1.jar&lib/guava-r09.jar&lib/jxl.jar&lib/selenium-java-2.21.0.jar"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dir="D:/SeleniumAutomation/SAFX-3.1/bin"&&&&&&&&&&&&&&&&&&&&&dir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&dir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/jaxen-1.1-beta-6.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/log4j-1.2.16.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/mail.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/testng-6.0.1.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/dom4j-1.6.1.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/guava-r09.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/jxl.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&&file="D:/SeleniumAutomation/SAFX-3.1/lib/selenium-java-2.21.0.jar"&todir="C:/Users/topcat/Desktop/lib"&&&&&&&&&&
上面ant脚本中,我们自己的jar包叫做333.jar打包到桌面。在桌面建一个lib文件,将第三方 jar文件拷贝到lib文件夹中。 在Class-Path属性中设置第三方jar的相对路径。
上图就是就是打包完之后的格式。
第三中方式与第一和第二中方式不同的是,这中方法会有多个文件,不像第一和第二中方式中只生成一个jar文件,但也有优势就是结构相对比较简洁。选择哪中方式,还是看个人喜好
TA的最新馆藏[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢把第三方的jar包一起打成一个jar包方法 - CSDN博客
把第三方的jar包一起打成一个jar包方法
插件介绍:
&&&&&&& 这个插件可以帮助你将自己的程序连同第三方的JAR包一起打成一整个的jar包,这样 别人在调用你打成的jar包的时候,就不用再单独下载第三方jar文件了。详细介绍可以百度下。
下载地址:
&&&&&&&&&&
对于MyEclipse 8.6 +由于软件的的更新,相应的目录页发生了变化,则需要将 net.sf.fjep.fatjar_0.0.31.jar& 放到 安装目录的 dropins 下面的plugs中 重启myeclipse 右键项目里面会有:
使用这个很方便 一路next也可以 你也可以选择自己项目中需要的jar文件&
点击finish完成
本文已收录于以下专栏:
相关文章推荐
NetBeans确实是个非常好用的IDE,不过和eclipse导出jar的步骤不太一样,它是自动构建的。其实,不包含其他jar的普通项目,只要右击项目勾选“清理并构建”,在项目工程下的“dist”目录...
/feisky/archive//1640727.html
在Android平台中可以使用第三方外部JAR库...
步骤1:准备主清单文件 “MANIFEST.MF”,
由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下...
安装Eclipse打包插件Fat Jar
   Fat Jar Eclipse Plug-In是一个可以将Eclipse Java Project的所有资源打包进一个可执行jar文件的小工具,可以方便...
导入 jar 包及第三方开源库教程
导入 jar 包的方式非常简单,就是在项目中的 libs 中放入你需要导入的 jar 包,然 后右键你的 jar 文件,选择“add as a libr...
开发中经常会使用第三方提供的jar,这些jar包中封装很多实用的功能。比如图形处理的UIL、Picasso、Glide,网络处理的Http-ok等,那我们如何为其他人提供一个jar包呢?
可能很多人会...
啥都不说,come on!先新建一个java项目,这边不做介绍
然后在src下面自己建使用的方法吧
然后开始打包:
在File-&Project Structure-&Artifacts,如图:...
在Android平台中可以使用第三方外部JAR库文件,在Eclipse开发环境中,仅仅3步就可以使用第三方.jar文件:1.在Package Explorer(包浏览器)面板中,右键单击鼠标在弹出的菜...
右键工程,Build path, 
  java build path,选择libraries
     在右边的按钮中点击“Add Library”, 选择“User library”...
一 导入jar包的方法
1.打开自己的工程,将需要导入的jar包copy到libs文件夹下
2.在导入的jar包处单击菜单 Add As Library
4.然后这...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 mac sh文件调用jar 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信