小弟使用JNI调用DLL时,如果把TestDll.class,TestDll.h及测试DLL(SampleDll.dll)都放在C:\j2sdk1.4.0-rc\bin下调用成功,如果放在工程中,总是出错,出错信息如下: at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at TestDll.<clinit>(TestDll.java:16)有时候还弹出Java virtual Machine launcher对话框:
Could not find the main class.Program will exit!
我打印了一下取java.library.path 值的\语句,
System.out.println("java.library.path :"+System.getProperty("java.library.path"));
值为:lib/native,不知道这是什么意思.请大侠指点,为什么在CMD下调试通过,在工程中就不可以.我已经把DLL放到C:\j2sdk1.4.0-rc\bin了.
小弟开发环境:j2sdk1.4.0-rc+JB8
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at TestDll.<clinit>(TestDll.java:16)有时候还弹出Java virtual Machine launcher对话框:
Could not find the main class.Program will exit!
我打印了一下取java.library.path 值的\语句,
System.out.println("java.library.path :"+System.getProperty("java.library.path"));
值为:lib/native,不知道这是什么意思.请大侠指点,为什么在CMD下调试通过,在工程中就不可以.我已经把DLL放到C:\j2sdk1.4.0-rc\bin了.
小弟开发环境:j2sdk1.4.0-rc+JB8
解决方案 »
- 关于GUI设计窗体上中文的显示问题?
- JAVA 串口通信问题 .. 麻烦大家了
- 一个基本的数据库更新的问题
- 求助】如何确定两个CHOICE列表框的选择问题,急!!!
- 关于线程,继续讨论,gemouzhi(gemouzhi)请进,
- java的EXE文件可否反编译成.java文件?反编译成.Class也行
- 21天学通java的课后习题在那个网站
- 问一个applet的问题
- JAVA应用程序界面编程高手请进:)一个做java的软件公司的面食问题。
- 各位ggjj,小妹在开发中碰到一个棘手的问题,请大家帮帮忙啊!!
- 关于Socket题,利用ObjectOutputStream发送给多个客户端的Vector,客户端接受的数据不一样? 这是怎么回事?
- 关于加密算法的问题!
in;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Program Files\Microsoft
SQL Server\80\Tools\BINN;C:\Program Files\Symantec\pcAnywhere\;"C:\Program Files
\Symantec\Norton Ghost 2003\";D:\Microsoft Visual Studio\Common\Tools\WinNT;D:\M
icrosoft Visual Studio\Common\MSDev98\Bin;D:\Microsoft Visual Studio\Common\Tool
s;D:\Microsoft Visual Studio\VC98\bin;C:\Program Files\IDM Computer Solutions\Ul
traEdit-32;C:\BITWARE\
我建议还是将Jb的JDK Path 改为C:\j2sdk1.4.0-rc\bin
其他的lib路径也重新配置相应的目录
我在JB中配置JDK路径为C:\j2sdk1.4.0-rc(配置方法:Tools->Configure JDKs->JDK home path),还是不行呀
另外,如何配置 java.library.path ?
在JB中显示目录为:lib/native,这个路径到底是哪里??
Tools->Configure Libraries->Add一个目录,因为DLL不是JAR,无法直接包括进去,只能指到SampleDll.DLL的父目录?
如果不行
要不就这样吧
public class A
{
static
{
System.loadLibray("SampleDll.dll");
}
public A()
{
}
}
System.out.println(f.getCanonicalPath());
1.如何编译javah TestClass?
若在工程根目录下,很简单,只要拷贝到C:\j2sdk1.4.0-rc\bin下,调用javah TestClass即可.
现在不在根目录,如何编译?
2.如何配置lib?
如何放SampleDll.dll?
例:TestDll 的Package为:com
首先在C:\j2sdk1.4.0-rc\bin>下新建目录:com
并拷贝TestDll.class到C:\j2sdk1.4.0-rc\bin\com
其次在CMD下,执行
C:\j2sdk1.4.0-rc\bin>javah com.TestDll,
在C:\j2sdk1.4.0-rc\bin下生成com_TestDll.h(结构为package_classname)
最后com_TestDll.h加入到DLL中去,生成新的DLL
注:如何把DLL加到工程路径中,防止出现java.library.path找不到DLL?
首先在工程中获取java.library.path的路径.如果是JB,则在lib\native下(如果没有native,则新建native).
最后把所有DLL放到lib\native下.