精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

淺談將JNI庫打包入jar文件-創新互聯

在Java開發時,我們有時候會接觸到很多本地庫,這樣在對項目打包的時候我們不得不面臨一個選擇:要么將庫文件與包好的jar文件放在一起;要么將庫文件包入jar。

成都創新互聯是一家集網站建設,雨花臺企業網站建設,雨花臺品牌網站建設,網站定制,雨花臺網站建設報價,網絡營銷,網絡優化,雨花臺網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

將一個不大的項目包成一個jar有諸多發布優勢,本次將分享一個將JNI包入jar的方法。

[實現思路]

將JNI庫(dll、so等)包入jar后,我們無法通過路徑來訪問它們,而庫的讀取依賴一個java.library.path下對應名稱的外部庫文件,我們僅僅需要在調用JNI前將其由jar包釋放出來,這類似于文件的拷貝過程。

[部署位置的選取]

java.library.path并不是一個固定的位置,使用下面代碼可以打印出來:

System.out.println(System.getProperty("java.library.path"));

例如在本人的計算機上,結果是這樣的:

D:\Program Files (x86)\Java\jre7\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;D:/ProgramFiles (x86)/Java/jre7/bin/client;D:/Program Files(x86)/Java/jre7/bin;D:/Program Files (x86)/Java/jre7/lib/i386;C:\Program Files(x86)\NVIDIA Corporation\PhysX\Common;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;E:\Develop\jdk1.7.0_71\bin;E:\Develop\Git\cmd;E:\Develop\Git\bin;E:\Develop\apache-maven-3.2.1\bin;E:\eclipse-java-luna-SR1-win32\eclipse;;.

絕對路徑會由于不同系統而變化,因而這里選擇了”.”這個相對路徑,也就是項目目錄下。

[JNI部署類]

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class JNIDevelopment {
	byte[] cache;
	List sources;
	public JNIDevelopment(){
		cache = new byte[1024];
		sources = new LinkedList();
		//這里加入本地庫文件名,也可以稍加修改讀取一個外部xml或properties 
		sources.add("luajava-1.1.dll");
		sources.add("libluajava-1.1.so");
	}
	private Boolean sourceExist(String sourceName){
		File f = new File("." + File.separator + sourceName);
		return f.exists();
	}
	public void doDefaultDevelopment(){
		for (String s:sources){
			doDevelopment(s);
		}
	}
	public Boolean doDevelopment(String sourceName){
		if(sourceExist(sourceName)){
			return true;
		} else{
			try{
				File f = new File("." + File.separator + sourceName);
				if(!f.exists()){
					f.createNewFile();
					System.out.println("[JNIDEV]:DEFAULT JNI INITION:"+sourceName);
				}
				FileOutputStream os = new FileOutputStream(f);
				InputStream is = getClass().getResourceAsStream(sourceName);
				if(is == null){
					os.close();
					return false;
				}
				Arrays.fill(cache,(byte)0);
				int realRead = is.read(cache);
				while(realRead != -1){
					os.write(cache, 0, realRead);
					realRead = is.read(cache);
				}
				os.close();
			}
			catch(Exception e){
				System.out.println("[JNIDEV]:ERROR IN COPY JNI LIB!");
				e.printStackTrace();
				return false;
			}
		}
		return true;
	}
	public static void main(String[] args) {
		JNIDevelopment deve = new JNIDevelopment();
		deve.doDefaultDevelopment();
		try{
			System.loadLibrary("luajava-1.1");
			System.out.println("本地庫加載成功");
		}
		catch(UnsatisfiedLinkError e){
			System.out.println("本地庫加載失敗");
		}
	}
}

新聞名稱:淺談將JNI庫打包入jar文件-創新互聯
本文路徑:http://m.jcarcd.cn/article/cepoos.html
主站蜘蛛池模板: 国产精品高清尿 | 91熟女偷窥 | 九九热精品在 | 国产视频精选 | 午夜国产在线观看 | 欧美日韩色综合网站 | 国产偷窥盗摄视频 | 中文字幕欧美第一页 | 国产精品+老牛影视 | 制服丝袜国产精 | 国产精品区在 | 精品一区二区日韩 | 日韩欧美国产电影 | 国产日本欧美三区 | 最新日韩欧美不卡一二三区 | 乱中年女人伦中 | 国产91精品 | 成人国产亚 | 蜜臀国产在线视频 | 中文字幕在线免费 | 97午夜理伦| 欧美三级| 国产成本人片免费v | 国产精品专区四季 | 国产高清成人精品 | 国产视频二区 | 欧美最猛 | 国产又黄又硬又粗 | 日韩中文精品 | 国产十欧美 | 欧美日韩国产亚洲 | 91视频站 | 拍免费视频 | 国产日韩一二三四区 | 国产剧情片视须资 | 日韩一区二区www | 动漫一区二区三区 | 国产免费h无 | 成人午夜小视频 | 精品国产a | 欧美最猛黑 |