導航:首頁 > 編程語言 > 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相關的資料

熱點內容
5線4相步進電機單片機控制 瀏覽:293
linux重啟php命令行 瀏覽:999
加密軟體gif 瀏覽:761
取字元串的前幾位java 瀏覽:312
車銑復合雕花編程教學 瀏覽:904
android圖片等比例縮放 瀏覽:355
javaset使用方法 瀏覽:339
modbus轉opc源碼 瀏覽:321
csharp串口編程 瀏覽:544
山東雙線伺服器雲伺服器 瀏覽:865
帶動程序員技術氛圍的活動有哪些 瀏覽:551
華為捐贈源碼 瀏覽:591
ccs編譯程序一直彈debug 瀏覽:47
安卓手機如何調白圖片 瀏覽:355
什麼牌子的安卓平板最好用 瀏覽:172
keil編譯顯示目標沒有建立 瀏覽:793
安卓收銀機如何安裝列印機驅動 瀏覽:820
電動車什麼app上買 瀏覽:531
墨西哥pdf 瀏覽:712
python圖形界面編程 瀏覽:958