日期:2014-05-18  浏览次数:20724 次

JavaBean调用dll问题
大家好,首先谢谢你能关注该帖子,我现在遇到一个大问题需请求大家
我写了一个C++的dll,名称是Java2Com.dll,包含JavaBridgeCom.h和Java2Com.cpp两个文件,JavaBridgeCom.h是由JavaBridgeCom.java生成的jni头文件
======================================
JavaBridgeCom.h源代码如下:
/*   DO   NOT   EDIT   THIS   FILE   -   it   is   machine   generated   */
#include   <jni.h>
/*   Header   for   class   JavaBridgeCom   */

#ifndef   _Included_JavaBridgeCom
#define   _Included_JavaBridgeCom
#ifdef   __cplusplus
extern   "C "   {
#endif
/*
  *   Class:           JavaBridgeCom
  *   Method:         Encode
  *   Signature:   (Ljava/lang/String;JIZLjava/lang/String;I)I
  ,   jstring,   jlong,   jint,   jboolean,   jstring,   jint
  */
JNIEXPORT   jint   JNICALL   Java_JavaBridgeCom_Encode
    (JNIEnv   *,   jclass);

#ifdef   __cplusplus
}
#endif
#endif
=============================================
Java2Com.cpp源代码如下:

#include   "JavaBridgeCom.h "
#include   <windows.h>
//,   jstring,   jlong,   jint,   jboolean,   jstring,   jint
JNIEXPORT   jint   JNICALL   Java_JavaBridgeCom_Encode
    (JNIEnv   *,   jclass)
{
printf( "inter   JavaCOM   success!\n ");
MessageBox(NULL, "Method05(INT   intPro)   Help,   你好xxxxxx ",   "提示信息 ",   MB_OK);

return   0;
}
=============================================
然后我写了一个java类(名称是JavaBridgeCom.java)调用Java2Com.dll
代码如下:
public   class   JavaBridgeCom   {
static   {
System.loadLibrary( "Java2Com ");
}
public   native   static   int   Encode();

    public   static   void   main(String[]   args)   {
    int   c_return_one;
    JavaBridgeCom   xiang   =   new   JavaBridgeCom();
    c_return_one   =   xiang.Encode();

调用成功!!!!
=========================
在JavaBean调用Java2Com.dll就不行,调研方式是Jsp通过JavaBean调用Java2Com.dll
JavaBean名称为:JavaBridgeComBean.java
package   bean;
import   java.io.*;
import   java.lang.String;
public   class   JavaBridgeComBean
{
public   JavaBridgeCom(){}  
private   static   JavaBridgeComBean   javabridgecom;
static
{
System.loadLibrary( "Java2Com ");
}
                  public   native   static   int   Encode();
                  public   void   InvokeCEncode()
{
                          int   c_return_one;
        javabridgecom   =   new   JavaBridgeComBean();
        c_return_one   =   javabridgecom.Encode();
                    }
    }
=============================================
然后我写了一个Jsp页面调用这个JavaBean即JavaBridgeComBean.java
JspInvokeBean.jsp页面源代码如下:
<%@   page   contentTy