其实我已经按照网上很多文章的写法写了代码,但总是编译报错!代码如下GetIdealFaxAction.java:
package cn.wh.company.fax;public class GetIdealFaxAction {
            static {
                   System.loadLibrary("idealfax");//这个idealfax.dll文件存放在C:\j2sdk1.4.2_11\bin下面,并在path里面写上了C:\j2sdk1.4.2_11\bin;
               }        public native static boolean Init();
        public native static int Channel();
        public native static boolean Send(String number,String file);}调用这个程序的代码:
package cn.wh.company.fax;import cn.wh.company.common.web.BaseAction;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestAction extends BaseAction {
    public ActionForward execute2(ActionMapping mapping, ActionForm form,
                                  HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       GetIdealFaxAction getfax = new GetIdealFaxAction();//走到这一步就开始报错了,就算不用这一句,直接用GetIdealFaxAction.init();也报错!       return mapping.findForward("fax");
    }
}程序走到GetIdealFaxAction getfax = new GetIdealFaxAction()就开始报错了,就算不用这一句,直接用GetIdealFaxAction.init();也报错!不知道怎么调用c里面的init()这个函数,快郁闷死了,C++生成的dll文件应该没有什么问题,编译都通过!(idealfax.dll文件在这个java目录下面也都放了)我用debug查看的错误信息是UnsatisfiedLinkError,不知道什么原因!
高手解决下啊,这是本周的工作任务,一完成马上结贴送分!

解决方案 »

  1.   

    UnsatisfiedLinkError是指load你这个dll的时候出错了,这个ERROR后面应该跟着一些message表明什么错的,贴出来看看
      

  2.   

    将你的错误信息贴出来看看。
    如果你的web程序需要调用动态;我建议你做好先写一个java类测试一下。
    首先你得保证idealfax.dll没有问题;你可以写一个C++测试程序调用idealfax.dll这个dll如果测试没有问题,则说明idealfax.dll没有错误。
     //请把idealfax.dll放到resin,或者java.libpath目录下。只要jvm系统可以找到对应的idealfax.dll就可以了。
     //linux版 把idealfax.so,libstdc++.so.5放到%JAVA_HOME%/jre/lib/i386下就可以了。
    一般做法;如果你的web工程放在resin下运行就把idealfax动态库放在resin根目录下;
    如果放在tomcat下运行就放到%TOMCAT_HOME%/bin目录下。
    如果你是使用eclipse写一个java测试程序来测试的话;可以把idealfax动态库放到eclipse根目录下。
      

  3.   

    错误信息就是UnsatisfiedLinkError,这个是关键信息,其他的没有什么了!
    关于idealfax.dll的生成是在C:\j2sdk1.4.2_11\bin下面生成的,我将我的GetIdealFaxAction.java直接放到C:\j2sdk1.4.2_11\bin下面使用javac,javah生成.h文件然后用vc生成dll文件,这样我觉得有错,因为我的GetIdealFaxAction.java是有包的(package cn.wh.company.fax;),似乎不能直接copy到C:\j2sdk1.4.2_11\bin下面去生成,看这个是不是问题的所在?下午我会修改一下,就在工程目录下面使用JAVAH,看能否成功!请高手继续关注~~~
      

  4.   

    dll不是在C:\j2sdk1.4.2_11\bin下的,你要放到system32下吧,另外你这个dll是否还依赖于其他的dll如果有的话也要一并放入