仓酷云
标题:
来谈谈:Windows情况下Java加载DLL
[打印本页]
作者:
飘飘悠悠
时间:
2015-1-16 12:29
标题:
来谈谈:Windows情况下Java加载DLL
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
HowtoLoadaJavaNative/DynamicLibrary(DLL)
ThereareseveralwaystomakeitpossiblefortheJavaruntimetofindandloadadynamiclibrary(DLL)atruntime.Iwilllistthembrieflyhere,followedbyexamplesandfurtherexplanationbelow.
CallSystem.loadtoloadtheDLLfromanexplicitlyspecifiedabsolutepath.
CopytheDLLtooneofthepathsalreadylistedinjava.library.path
ModifythePATHenvironmentvariabletoincludethedirectorywheretheDLLislocated.
Specifythejava.library.pathonthecommandlinebyusingthe-Doption.
IfusingEclipse,setthejava.library.pathinEclipsefordevelopment/debugging.
1.CallSystem.loadtoloadtheDLLfromanexplicitlyspecifiedabsolutepath.
Thischoiceremovesalluncertainty,butembedsahard-codedpathwithinyourJavaapplication.Example:
importcom.chilkatsoft.CkZip;publicclassTest{static{try{System.load("C:/chilkatJava/chilkat.dll");}catch(UnsatisfiedLinkErrore){System.err.println("Nativecodelibraryfailedtoload./n"+e);System.exit(1);}}publicstaticvoidmain(Stringargv[]){CkZipzip=newCkZip();System.out.println(zip.version());}}
2.CopytheDLLtooneofthepathsalreadylistedinjava.library.path
ToseethecurrentvalueofthePATHenvironmentvariable,openaMS-DOSpromptandtype:
echo%PATH%
Anotherwayofviewingthejava.library.pathistorunthisJavacode:
Stringproperty=System.getProperty("java.library.path");StringTokenizerparser=newStringTokenizer(property,";");while(parser.hasMoreTokens()){System.err.println(parser.nextToken());}
Note:Thejava.library.pathisinitializedfromthePATHenvironmentvariable.Thedirectoriesmaybelistedinadifferentorder,andthecurrentdirectory"."shouldbepresentinjava.library.path,butmaynotbelistedinthePATHenvironmentvariable.
TheloadLibrarymethodmaybeusedwhenthedirectorycontainingtheDLLisinjava.library.path.Toload"chilkat.dll",callSystem.loadLibrary("chilkat"),asshownhere:
importcom.chilkatsoft.CkZip;publicclassTest{static{try{System.loadLibrary("chilkat");}catch(UnsatisfiedLinkErrore){System.err.println("Nativecodelibraryfailedtoload./n"+e);System.exit(1);}}publicstaticvoidmain(Stringargv[]){CkZipzip=newCkZip();System.out.println(zip.version());}}
3.ModifythePATHenvironmentvariabletoincludethedirectorywheretheDLLislocated.
DothisbymodifyingthePATHenvironmentvariablefromtheWindowsControlPanel.
SetPATHonWindowsXP:
Start->ControlPanel->System->Advanced
ClickonEnvironmentVariables,underSystemVariables,findPATH,andclickonit.
IntheEditwindows,modifyPATHbyaddingthelocationoftheclasstothevalueforPATH.IfyoudonothavetheitemPATH,youmayselecttoaddanewvariableandaddPATHasthenameandthelocationoftheclassasthevalue.
Closethewindow.
ReopenCommandpromptwindow,andrunyourjavacode.
SetPathonWindowsVista:
Rightclick“MyComputer”icon
Choose“Properties”fromcontextmenu
Click“Advanced”tab(“Advancedsystemsettings”linkinVista)
IntheEditwindows,modifyPATHbyaddingthelocationoftheclasstothevalueforPATH.IfyoudonothavetheitemPATH,youmayselecttoaddanewvariableandaddPATHasthenameandthelocationoftheclassasthevalue.
ReopenCommandpromptwindow,andrunyourjavacode.
Important:SettingthePATHenvironmentvariablefromaMS-DOScommandprompthasnoeffectonjava.library.path.Forexample,thisdoesnotwork:
setPATH=c:/chilkatJava;%PATH%javaTest
Also,modifyingthejava.library.pathfromwithinJavacodedoesnotworkeither:
static{try{//Addingadirectorytojava.library.pathherewillnotchangeanything.//System.loadLibrarywillstilllookinthedirectorieslistedinjava.library.path//asitexistedattheverystartoftheprogram.//Theextradirectorypathaddedtojava.library.pathwillnot//besearchedbyloadLibrary.Stringlibpath=System.getProperty("java.library.path");libpath=libpath+";C:/chilkatJava";System.setProperty("java.library.path",libpath);System.loadLibrary("chilkat");}catch(UnsatisfiedLinkErrore){System.err.println("Nativecodelibraryfailedtoload./n"+e);System.exit(1);}}
4.Specifythejava.library.pathonthecommandlinebyusingthe-Doption.
Forexample:
java-Djava.library.path=c:/chilkatJavaTestApp
5.IfusingEclipse,setthejava.library.pathinEclipsefordevelopment/debugging.
OpenProject->Properties,select“JavaBuildPath”,clickonthe“AddExternalJARs…”buttonandaddthe“chilkat.jar”
(stillwithintheProjectPropertiesdialog)Clickonthe“Run/DebugSettings”,selectyourJavaclass,thenclickonthe“Edit…”button.Selectthe“Arguments”tab,thenadd-Djava.library.path=”C:/chilkatJava;${env_var:PATH}”where“C:/chilkatJava”isthedirectorypathcontainingthe“chilkat.dll”file.
</p>
在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
作者:
不帅
时间:
2015-1-18 09:50
即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。
作者:
活着的死人
时间:
2015-1-25 07:38
掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。
作者:
老尸
时间:
2015-2-2 18:39
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
作者:
透明
时间:
2015-2-8 04:50
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
作者:
爱飞
时间:
2015-2-24 17:30
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
作者:
变相怪杰
时间:
2015-3-7 13:19
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
作者:
再现理想
时间:
2015-3-15 07:30
用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。
作者:
乐观
时间:
2015-3-21 22:51
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2