Jsp 使用JNI的javabean?

Jsp 使用JNI的javabean?,jsp,tomcat,java-native-interface,javabeans,Jsp,Tomcat,Java Native Interface,Javabeans,我在JavaBean代码中添加了本机方法 然后我复制了System32文件夹中的.dll文件 在JSP中使用javabean时 它给出了一个错误: HTTP状态500- 类型异常报告 信息 说明服务器遇到内部错误,无法满足此请求 例外情况 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()

我在JavaBean代码中添加了本机方法

然后我复制了System32文件夹中的.dll文件

在JSP中使用javabean时

它给出了一个错误:

HTTP状态500-

类型异常报告

信息

说明服务器遇到内部错误,无法满足此请求

例外情况

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String;
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因

javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String;
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:124)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String;
    BeanDir.mysimplebean.sayHello(Native Method)
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:112)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因

javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String;
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:124)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
java.lang.UnsatisfiedLinkError: BeanDir.mysimplebean.sayHello()Ljava/lang/String;
    BeanDir.mysimplebean.sayHello(Native Method)
    org.apache.jsp.jsp.callbean_jsp._jspService(callbean_jsp.java:112)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
注意,Apache Tomcat/6.0.20日志中提供了根本原因的完整堆栈跟踪。 ApacheTomcat/6.0.20

Java bean代码:

package BeanDir;
import java.util.*;
//This file must be compiled Manually using javac 
//cd D:\tomcat\webapps\examples\WEB-INF\classes\BeanDir\mysimplebean.java
public class mysimplebean 
{
    static
    {
        String s=System.getProperty("java.library.path");
        System.setProperty("java.library.path",s);
        System.loadLibrary("HelloWorld");
    }
    public String getceoname() 
    {   
        String ceonameval = "Tom Hanks CEO of Tom Hanks INC";        
        return ceonameval;
    }  
    public String ceoemail() 
    {   
        String ceoemailval = "tom@tomhanksinc.com";      
        return ceoemailval;
    } 
    public double findtakehome(int salary,String designation) 
    {           
        double takehomeamt;
        if(designation=="Developer")
        {
            takehomeamt = salary+salary*0.15; //15 % Raise in Salary
        }
        else
        {
            takehomeamt = salary+salary*0.10; //10 % Raise in Salary
        }
        return takehomeamt;
    }
    public native String sayHello();    
}

我不能留下评论,但是

您的servlet容器与dll所在的windows计算机是否在同一台计算机上? System.getPropertyjava.library.path是否包含jsp中的system32文件夹?
这两个问题的答案都应该是“是”,这样才能起作用

但不是用javabean

我在一个类中编写了JNI包装器


我在JSP程序中创建了这个对象。

hi ryan,我使用了相同的.dllinside system32文件夹来创建servlet,它工作正常。我运行单独的控制台pgm来查找java.library.path,它还显示system32文件夹。您需要执行以下操作:test.jsp:hi ryan,我尝试在另一个servlet页面中使用相同的.dll。它显示了在另一个类加载器中加载的错误。dll。因此,我尝试在java bean中创建JNI包装器。有了它,我可以创建许多实例,并将其scope属性称为application-in-use-bean标记。如果你对此有任何建议,请告诉我。谢谢