Entry.java:package cabclass;public class Entry {    public Entry () {  }
  
  public String Show()
  {
   return "xxx";
   }
  
 
  public native void doMakeCab(String aFile, String fSpec);
static
{
System.loadLibrary("Compress");
}
 
}Cab.java:package cabclass;import cabclass.Entry;public class Cab
{
  public static void main(String[] args)
  {
    Entry mc = new Entry();
    mc.doMakeCab("e:\\cab\\", "e:\\ss\\*.*");<运行到这里出错>
  }
}错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: doMakeCab
        at cab.Entry.doMakeCab(Native Method)
        at cab.Cab.main(Cab.java:10)但是把package "cabclass"和import cabclass.Entry都注释了就能运行?
其中Compress是delphi写的一个dll.
请大家帮忙一下.搞了很久没解决,郁闷.在线等.谢谢.

解决方案 »

  1.   

    同一个包 当然不用了import了
      

  2.   

    去掉class Entry里面的native,不知道这个词你是从哪抄来的,还有后面的;号
    public void doMakeCab(String aFile, String fSpec)
    {...顺便去掉import cabclass.Entry;
      

  3.   

    因为用到了jni,所以native是要用的,要不然编译也没法通过.
    上面的package的问题解决了.但是还有一个更烦的问题.我在一个jsp页面调用Entry.doMakeCab的方法.错误了下面的错误:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.Test.Test_jsp._jspService(Test_jsp.java:83)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)