Jdk加载DLL类库
手动jdk/bin下放置DLL类库
如下:
cd C:\Program Files\fills-tools\Java\jdk1.8.0_202\bin 或者 D:\Program Files\Java\jdk1.8.0_202\bin
放置 DLL类库
jdk会自动加载dll
Java代码jdk/bin下放置DLL类库
/** *获取Java jdk路径 *@returnSet<String> */ public staticSet<String> getJavaPath(){ //获取java类库路径 String[]p= System.getProperty("java.library.path").split(";"); //获取java-jdk版本 StringjavaVer= System.getProperty("java.version"); Set<String>ps=newHashSet<String>(); for(Stringv:p){ if(v.endsWith("\\Java\\jdk"+javaVer+"\\bin") ||v.endsWith("/Java/jdk"+javaVer+"/bin")){ ps.add(v); } } return ps; } /** * *@Function: FileUtil.java *@Description:查找文件并保存本地 * *@param: localPath *@param: searchFile *@return:void * */ public static voidsearchAndSaveLocal(StringlocalPath,StringsearchFile){ if(!createFile(localPath)){ return; } StringsearchPath=getCurrentOsPath(searchFile); if(searchPath!=null){ InputStreamin= getFileInputStream(searchFile); if(in!=null){ try{ writeToLocal(localPath,in); }catch(Exceptione) { } try{ in.close(); }catch(Exceptione2) { } } } } public static voidmain(String[]args) { Stringjacob="jacob-1.18-x64.dll"; for(Stringjdkpath:JavaClassPath.getJavaPath()){ System.out.println(jdkpath); FileUtil.searchAndSaveLocal(jdkpath+"/"+jacob,jacob); } } |
DLL类库
注意: C盘权限问题
D盘放置情况
Java 代码加载DLL类库
/** *加载dlL 作为系统path *@paramdllPath *@paramdll */ public static voidaddDirPath(StringdllPath,Stringdll){ try{ //获取系统path Fieldfield= ClassLoader.class.getDeclaredField("sys_paths"); //允许更改配置 field.setAccessible(true); //获取系统配置 String[]path= (String[])field.get(null); String[]temp=newString[path.length+1]; System.arraycopy(path, 0,temp, 0,path.length); //指定加载配置文件 temp[path.length] =dllPath; field.set(null,temp); //从新加载path下的ddl System.load(dllPath+dll); }catch(Exceptione){ } } //保存文件路径,并作为系统path private staticStringfilePath="D:/fills-data/voice/"; public static voidmain(String[]args) { //第二种方案将jacob-1.18-x64.dll所在目录加载到sys_path里,重新System.load(dll) Stringjacob="jacob-1.18-x64.dll"; FileUtil.searchAndSaveLocal(filePath+jacob,jacob); //另存到指定地方 JavaClassPath.addDirPath(filePath,jacob); } |
注:系统应用加载新的path路径作为类库