Ich habe native Methode in Java-Bean-Code hinzugefügt.Java-Bean mit JNI?
Dann habe ich .dll-Datei in System32-Ordner kopiert.
während der Verwendung von Javabean in JSP.
es gibt einen Fehler:
HTTP-Status 500 -
Typ Ausnahmebericht
Nachricht
Beschreibung Der Server hat einen internen Fehler(), die sie von der Erfüllung dieser Anforderung verhindert.
Ausnahme
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)
Ursache
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)
Ursache
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)
Anmerkung Der vollständige Stack-Trace die Ursache in den Apache Tomcat/6.0.20 Protokolle verfügbar . Apache Tomcat/6.0.20
Java Bean-Code:
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();
}
Hallo Ryan, Ich verwendete die gleiche. DLL (innerhalb System32 Ordner) für Servlet funktioniert es gut. Und ich renne die separate Konsole pgm, um die "java.library.path" zu finden, es zeigt auch System32 Ordner. – krishnakumar
Sie müssen etwas tun wie: test.jsp: <% out.print ("Meine dll sollte irgendwo hier sein:" + System.getProperty ("java.library.path")); %> –
hi ryan, Ich habe versucht, die gleiche .dll in einer anderen Servlet-Seite.Es zeigt einen Fehler ".dll in einem anderen Klassenlader geladen" .So dass ich versuche den JNI-Wrapper in Java-Bean zu erstellen. mit dem ich kann viele Instanzen meine Erwähnung seiner Bereich Attribut als "Anwendung" in Verwendung Bean-Tag erstellen. Wenn Sie irgendeinen Vorschlag dazu haben, lassen Sie es mich wissen. danke – krishnakumar