0
這是我放在我的jsp頁面中的代碼,只是爲了測試它是否工作正常。 沒有任何使用opencv類的jsp頁面正常工作。 但我在使用opencv庫的對象時出現了這個錯誤。在jsp中使用openCV會導致UnsatisfiedLinkError?
<%@ page import="org.opencv.core.*" %>
<%@ page import="org.opencv.highgui.Highgui" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Title</title>
</head>
<body>
<%
System.loadLibrary("opencv_java248");
Mat img = Highgui.imread("F:/project/im2.jpg");
%>
</body>
</html>
附加錯誤頁的詳細信息:
錯誤代碼是:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:442)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
javax.servlet.ServletException: java.lang.UnsatisfiedLinkError: org.opencv.highgui.Highgui.imread_1(Ljava/lang/String;)J
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840)
org.apache.jsp.first_jsp._jspService(first_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.UnsatisfiedLinkError: org.opencv.highgui.Highgui.imread_1(Ljava/lang/String;)J
org.opencv.highgui.Highgui.imread_1(Native Method)
org.opencv.highgui.Highgui.imread(Highgui.java:359)
org.apache.jsp.first_jsp._jspService(first_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
感謝您的回答@oskopek ..我可以知道爲什麼我不應該在jsp內部使用代碼的原因嗎?我搜索了很多,但也沒有發現什麼與jsp和opencv?爲什麼? – kirtan403
所謂的scriptlet由於taglibs出現而被棄用。他們很難處理:不可重用的代碼,痛苦的調試和html變得混亂。請參閱Oracle的[JSP的代碼約定](http://www.oracle.com/technetwork/articles/javase/code-convention-138726.html)。此外,[這個答案](http://stackoverflow.com/a/3180202/2713162)總結得非常好。 – oskopek
關於OpenCV和JSP:你沒有找到任何東西,因爲它們沒有任何共同之處。 JSP可用於在後臺顯示OpenCV操作的結果。如果你想使用OpenCV來轉換服務器上的圖像,那很好,但是你應該在服務器端POJO中完成,並像使用JSP那樣顯示結果。例如:假設客戶端連接到您的服務器,訪問JSP,上傳圖像。然後,您可以存儲/轉換映像服務器端,並讓他通過使用Servlet將其轉發到另一個JSP來獲得結果。 – oskopek