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

熱點內容
php獨立運行 瀏覽:530
手機sh執行命令 瀏覽:727
雲伺服器的角色 瀏覽:733
單片機頻率比例 瀏覽:840
我的世界伺服器如何關閉正版驗證 瀏覽:504
如何查roid伺服器上的 瀏覽:130
安卓手機主板如何撬晶元不掉電 瀏覽:249
php各個框架的優缺點 瀏覽:101
php1100生成數組 瀏覽:359
以後做平面設計好還是程序員好 瀏覽:552
雲伺服器應用管理 瀏覽:438
飢荒雲伺服器搭建過程 瀏覽:186
可編程式控制制器優點 瀏覽:99
壓縮垃圾車說明書 瀏覽:28
五輪書pdf 瀏覽:802
單片機定時流水中斷系統流水燈 瀏覽:701
u8如何連接伺服器配置 瀏覽:66
動力在於緩解壓力 瀏覽:867
報考科一用什麼app 瀏覽:346
knn人臉識別演算法 瀏覽:431