testDll.java//java源代码package dll;public class testDll
{
private native int back();
static
{
try
{
System.loadLibrary("testDll");
}
catch(SecurityException e)
{
System.err.println("security failed "+e);
}
}
public void back1()
{
String s="";
s +=back();
System.out.println(s);
}
}testDll.h//生成的c的头文件/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class testDll */#ifndef _Included_testDll
#define _Included_testDll
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: testDll
* Method: back
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_testDll_back
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endiftestDll.c//自己编写的c的源代码#include <stdio.h>
#include "testDll.h"JNIEXPORT jint JNICALL
Java_testDll_back(JNIEnv * jEnv,
jobject this) {
return 2;
}testDll.jsp//jsp文件用来调用testDll.java(把它作为javaBean调用)<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import ="dll.testDll" %><jsp:useBean id="mydb" scope="session" class="dll.testDll" />
<jsp:setProperty name="mydb" property="*" />
<html>
<body><font size=4>
<%! String msg; %>
<% msg =request.getParameter("msg"); %>
<% mydb.back1();%>
</font>
</body>
</html>如果我把testDll.java的方法back1()中的back()注释掉,不会出现错误。
如果不注释掉,就会出现如下错误:
java.lang.UnsatisfiedLinkError: back
at dll.testDll.back(Native Method)
at dll.testDll.back1(testDll.java:25)
at org.apache.jsp._0002fjsp_0002ftestDll_jsp._jspService(_0002fjsp_0002ftestDll_jsp.java:111)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:458)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:215)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2314)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1000)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1093)
at java.lang.Thread.run(Thread.java:484)请高手解答!
{
private native int back();
static
{
try
{
System.loadLibrary("testDll");
}
catch(SecurityException e)
{
System.err.println("security failed "+e);
}
}
public void back1()
{
String s="";
s +=back();
System.out.println(s);
}
}testDll.h//生成的c的头文件/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class testDll */#ifndef _Included_testDll
#define _Included_testDll
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: testDll
* Method: back
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_testDll_back
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endiftestDll.c//自己编写的c的源代码#include <stdio.h>
#include "testDll.h"JNIEXPORT jint JNICALL
Java_testDll_back(JNIEnv * jEnv,
jobject this) {
return 2;
}testDll.jsp//jsp文件用来调用testDll.java(把它作为javaBean调用)<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import ="dll.testDll" %><jsp:useBean id="mydb" scope="session" class="dll.testDll" />
<jsp:setProperty name="mydb" property="*" />
<html>
<body><font size=4>
<%! String msg; %>
<% msg =request.getParameter("msg"); %>
<% mydb.back1();%>
</font>
</body>
</html>如果我把testDll.java的方法back1()中的back()注释掉,不会出现错误。
如果不注释掉,就会出现如下错误:
java.lang.UnsatisfiedLinkError: back
at dll.testDll.back(Native Method)
at dll.testDll.back1(testDll.java:25)
at org.apache.jsp._0002fjsp_0002ftestDll_jsp._jspService(_0002fjsp_0002ftestDll_jsp.java:111)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:458)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:215)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2314)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1000)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1093)
at java.lang.Thread.run(Thread.java:484)请高手解答!
解决方案 »
- 急!求java上传图片代码!
- weblogic 部署失败,请帮忙看看
- 困惑啊,为什么我的jsp页面总是提示404错误啊,大家帮忙看下啊
- 获取表单的list
- spring httpinvoker 怎么得到request,怎么写COOKIE
- 急急急!!关于框架的问题
- Invalid path 问题
- 封装查询类
- 请问rmi中,客户端可以用applet吗?
- 401 错误(IIS+Tomcat)
- 把用jspsmartupload的mySmartUpload.getRequest().getParameter("..")得到中文字符插入数据库和在再在数据库中查询后,不对字符转换内码,
- 使用"<jsp:forward...>"的疑惑
所以我想是不是可以找到DLL文件,但是找不到入口,无法调用DLL里的方法。
是不是你在javabean中用到jni?我只能建议你检查检查看少了没少那个文件?或者需要包含的文件都在不在?希望你的问题能加决,
而且,我以前用javaBean,如果没有package,直接放在classes下,也会出问题,
头都大了,呵呵
我也遇到同样的问题,如果解决的话,能不能告诉我方法,多谢![email protected]
我往一个数组里添加一个int出错
int value;
(*jEnv)->SetObjectArrayElement(jEnv, object, 0, value);warning C4047: 'function' : 'struct _jobject *' differs in levels of indirection from 'int '