原代码:
public class test { /**
 * @param args
 */
 static
     {
System.loadLibrary("TransferEth");
     }
   public native void Transfer_Ethernet(String  s); public static void main(String[] args) {
test  t= new test();
t.Transfer_Ethernet("TransScale.ini");
}
}错误信息如下:
Exception in thread "main" java.lang.UnsatisfiedLinkError: test.Transfer_Ethernet(Ljava/lang/String;)V
at test.Transfer_Ethernet(Native Method)
at test.main(test.java:17)

解决方案 »

  1.   

    是因为动态链接库地址不对造成的,要先设置java.library.path,然后把dll放这个路径下面就可以了。
      

  2.   

    把dll放到当前工作目录下试试!
      

  3.   

        我当前工作目录也放了,windows/system32目录下也放了,连源代码的目录都放了,包括jdk的目录,jre的目录,所有能放的目录都放了,在path的路径里也设了,可是还是显示同样的错误。
         可是如果我改一下名,把这个 System.loadLibrary("TransferEth");  改成 System.loadLibrary("TransferEth1"); ,就提示不一样的错误,即不能发现main class,说明java应该还是找到了这个dll吧,要是就是不行,晕了。
      

  4.   

    你应该在Test类中声明Transfer_Ethernet并且为Native我怎么没有看到?????
    你应该声明一下。
      

  5.   

    不好意,你已经声明了 public native void Transfer_Ethernet(String  s); 
    我刚刚没看到。
      

  6.   

    javah时没有使用完整 包名.类名 的形式 会出现java.lang.UnsatisfiedLinkError异常建议你重新javah 一次
      

  7.   

    可能出现错误的地方:dll位置建议放到 system32 下
    System.loadLibrary("TransferEth1");  动态链接库的名字一定要正确
    public native void Transfer_Ethernet(String  s); 一旦生成dll后方法名Transfer_Ethernet不能改了
    如果是cmd运行必须写类全名(包含包名),在eclipse中就无所谓了,只要前面工作做好,直接运行就可以了
    http://blog.csdn.net/shibenjie/archive/2009/06/03/4238287.aspx
      

  8.   

    只有逐步检查下:
    javac :重新编译
    javah :重新生成头文件
    如果是VC++中生成正确的.dll文件,放置在与java源文件同一目录,源文件中不要带包名。
    如果是第一次使用JNI,建议先拿个简单的程序先测试下,例如HelloWorld
      

  9.   

    以前我碰到过这样的问题,你看看你那是不是同样的情况:
    JNI 生成的方法名类似这样的,但C++编译器在 Link 时符号表里面的名字不一定是像 
    Java_sample_HelloNative_sayHello 这样的名字,比如我用 GNU 编译器 Link 时得到 Java_sample_HelloNative_sayHello@2342345 这样的名字。这样的话就会说找不到方法名会出错的。在 linker 的参数列表中指定一个 .def 文件后就正常了,比如我这样:
    EXPORTS
    Java_sample_HelloNative_sayHello =Java_sample_HelloNative_sayHello
    Java_sample_HelloNative_greet    =Java_sample_HelloNative_greet至于怎么在 C++ Linker 后面指定这个参数我也忘记了,现在找不到以前配置时的步骤,只有这个 .def 文件。