导航:首页 > 编程语言 > java动态加载jar

java动态加载jar

发布时间:2023-08-13 03:11:41

Ⅰ 求E语言通过java支持库调用jar包时参数传递教程

Java加载jar文件并调用jar文件当中有参数和返回值的方法

在工作当中经常遇到反编译后的jar文件,并要传入参数了解其中的某些方法的输出,想到Java里面的反射可以实现加载jar文件并调用其中的方法来达到自己的目的。就写了个Demo代码。

Ⅱ 如何使用URLClassLoader加载本地的Class文件

在Java里面,我们可以把一些类放到.jar文件里面,然后用ClassLoader动态加载。例如:[java]viewplainURLClassLoaderucl=URLClassLoader.newInstance(newURL[]{newURL("file:/sdcard/files/test.jar")});Classclazz=ucl.loadClass("com.test.TestClass");但是在Android上面,情况有所不同。首先第一个是jar文件的制作,Java里面直接把.class文件打包到.jar文件里面就可以了,但是Android的DalvikVM是不认Java的bytecode的,所以不能直接这么打包,而要用dx工具转成Dalvikbytecode才可以。当然,dx工具转了之后,jar包里面就不是.class文件了,而是.dex文件。第二个是,Android里面虽然也提供了URLClassLoader的实现,但是并不能用。要动态加载其它类,可以用的ClassLoader有:DexClassLoaderPathClassLoader其中,DexClassLoader可以加载apk,jar或者dex文件,例如:[java]viewplainFilejarFile=newFile("/sdcard/test.dex");if(jarFile.exists()){DexClassLoadercl=newDexClassLoader(jarFile.toString(),"/sdcard/test",null,ClassLoader.getSystemClassLoader());Classc=cl.loadClass("com.qihoo360.test.Test");}但是DexClassLoader要求指定一个可写的目录,即DexClassLoader构造函数的第二个参数,在上例中是/sdcard/test这个参数的含义是:因为Dalvik在加载dex文件时,会动态进行优化,DexClassLoader要求指定优化后dex文件存放的位置。PathClassLoader的限制要一些,它只能加载已经安装到Android系统中的apk文件,也就是/data/app目录下的apk文件。其它位置的文件加载的时候都会出现ClassNotFoundException.例如:[java]viewplainPathClassLoadercl=newPathClassLoader(jarFile.toString(),"/data/app/",ClassLoader.getSystemClassLoader());为什么有这个限制呢?我认为这其实是当前Android的一个bug,因为PathClassLoader会去读取/data/dalvik-cache目录下的经过Dalvik优化过的dex文件,这个目录的dex文件是在安装apk包的时候由Dalvik生成的。例如,如果包的名字是com.qihoo360.test,Android应用安装之后都保存在/data/app目录下,即/data/app/com.qihoo360.test-1.apk,那么/data/dalvik-cache目录下就会生成data@[email protected]@classes.dex文件。在调用PathClassLoader时,它就会按照这个规则去找dex文件,如果你指定的apk文件是/sdcard/test.apk,它按照这个规则就会去读/data/dalvik-cache/[email protected]@classes.dex文件,显然这个文件不会存在,所以PathClassLoader会报错。在Google修正这个问题之前,我们要么就只能用DexClassLoader,要么就只能用PathClassLoader加载已安装的apk了。

Ⅲ eclipse中的java工程项目如何引用外部jar包和dll动态链接库

1、引用jar包
绝对路径引用:右键工程-->properties-->Java Build Path-->Libraries-->Add external JARs... ,在弹出的对话框中选择要引入的jar包,OK即可。
相对路径引用:首先在工程目录下,新建一个libs文件夹,将要导入的jar包放入其中,然后右键工程-->properties-->Java Build Path-->Libraries-->Add JARs... ,在弹出的对话框中选择libs文件夹下的jar包即可。
2、引用dll动态链接库
绝对路径引用:右键工程-->properties-->java Build Path-->Source,点开工程,选择Native libraries location....,点击右侧的edit..-->external Folder...,选择要引入的dll文件所在文件夹即可。

相对路径引用:首先在工程目录下,新建一个libs文件夹,将要导入的dll文件包放入其中,右键工程-->properties-->java Build Path-->Source,点开工程,选择Native libraries location....,点击右侧的edit..-->Workspace..,选择libs文件夹即可。

阅读全文

与java动态加载jar相关的资料

热点内容
电子手帐app怎么下载 浏览:810
app播客是怎么赚钱的 浏览:380
东南亚服务器是什么档次 浏览:132
手机app怎么操控电热水器 浏览:839
python爬虫框架推荐 浏览:518
matlab遗传算法适应度函数 浏览:130
制作linux系统镜像 浏览:154
域名解析服务器ip地址不能正常 浏览:845
程序员十万个为什么 浏览:535
维信卡卡贷app怎么下载不了 浏览:919
qdim命令使用 浏览:873
截图R命令 浏览:654
基于单片机的智能台灯设计 浏览:685
多余app是怎么兑换皮肤的 浏览:552
sql数据库查询表命令 浏览:551
简单音乐网站源码 浏览:644
运动健康app华为手表怎么连接 浏览:748
肌肉塑造全书pdf下载 浏览:796
安卓简约拼图用什么软件好 浏览:289
fx1n加密程序 浏览:844