C:\Documents and Settings\Administrator\jbproject\emsp\classes>java Emsp
D:\Borland\JBuilder2006\jdk1.5\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program F
iles\Internet Explorer;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\WINDOWS\Microsoft.NET\Fr
amework\v1.1.4322\;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;D:\Borla
nd\JBuilder2006\jdk1.5\bin\;D:\Program Files\UltraEdit
Loading : EsmApi.dll
Exception in thread "main" java.lang.UnsatisfiedLinkError: InitializeEsm
        at Sms.InitializeEsm(Native Method)
        at Emsp.Initialize(Emsp.java:37)
        at Emsp.<init>(Emsp.java:24)
        at Emsp.main(Emsp.java:17)C:\Documents and Settings\Administrator\jbproject\emsp\classes>

解决方案 »

  1.   

    你可能没有loadLibrary,也可能是dll对应的方法名与你指定的函数名不匹配
      

  2.   

    To : myhgyp(也许是这样的,信不信由你) 
    代码太多了,贴出来也没用的。To: ChDw(米)
    有用 loadLibrary,方法名称应该没错,我都是Copy规范中的方法名
    我主要的问题就是如果Dll中的方法中的参数类型与我的Java对应的参数类型不同会不会出现这样的问题?
      

  3.   

    必需严格按javah生成的函数格式写代码,同时最好c/cpp文件要#include"javah生成的h文件"
      

  4.   

    我已经有DLL文件了,不用写C代码了吧?
      

  5.   

    我相信你Copy规范中的方法名肯定是错误的你应该按照javah生成的函数头来生成需要的dll
      

  6.   

    对了我这个DLL是用Deiphi写的是不是一样可以用JNI调用的呢?