2009-06-26 19 views
0

私はJava Beanコードにネイティブメソッドを追加しました。Java bean with JNI?

次に、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) 

ノート根本原因の完全なスタックトレースは、Apache Tomcatの/ 6.0.20ログで提供されています。 のApache Tomcat/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 = "[email protected]";  
     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();  
} 

答えて

0

私は

  1. コメントを残して、しかし...カントdllファイルがあるのと同じWindowsマシン上のサーブレットコンテナですに?
  2. System.getProperty( "java.library.path")にsystem32フォルダが含まれていますか(jsp内から)?

これは私がこの記事のためのソリューションを持っ

+0

hi ryan サーブレット用に同じ.dll(inside system32フォルダ)を使用しましたが、うまく動作します。 そして、私は別のコンソールpgmを実行して "java.library.path"を見つけます。 また、system32フォルダも表示されます。 なtest.jsp: – krishnakumar

+0

あなたが何か行う必要がある <% out.printを( "私のdllがどこかここにする必要があります: "+はSystem.getProperty(" java.library.pathに")); %> –

+0

HIライアン、 iは誤差 私は、Java Bean内 JNIラッパを作成しようとm個こと。だから、「別のクラスローダにロードされた.dll」示しpage.It別のサーブレットで同一の.dllを使用しようとしました。 それを使って、私は多くのインスタンスを作成することができます。 これについてのご提案がありましたらお知らせください。 ありがとう – krishnakumar

0

こんにちはを動作するために両方の質問に対する答えが「はい」でなければなりません。

Java Beanでは使用できません。

私はクラス内のJNIラッパーを記述します。

と私はJSPプログラムでオブジェクトを作成しました。