C++代码:
//---------------------------------------------------------------------------
U_Main.CPP
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop#include "U_Main.h"
#include "jni.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrm_Main *Frm_Main;
JNIEnv *env;//---------------------------------------------------------------------------
__fastcall TFrm_Main::TFrm_Main(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrm_Main::Button1Click(TObject *Sender)
{ jclass clazz = env->FindClass ("com/sun/test/user"); //这儿就报错 // If this class does not exist then return null.
if (clazz == 0)
ShowMessage("Class not Exist!");
}
//---------------------------------------------------------------------------U_Main.H
//---------------------------------------------------------------------------#ifndef U_MainH
#define U_MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TFrm_Main : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TFrm_Main(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFrm_Main *Frm_Main;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
U_Main.CPP
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop#include "U_Main.h"
#include "jni.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrm_Main *Frm_Main;
JNIEnv *env;//---------------------------------------------------------------------------
__fastcall TFrm_Main::TFrm_Main(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrm_Main::Button1Click(TObject *Sender)
{ jclass clazz = env->FindClass ("com/sun/test/user"); //这儿就报错 // If this class does not exist then return null.
if (clazz == 0)
ShowMessage("Class not Exist!");
}
//---------------------------------------------------------------------------U_Main.H
//---------------------------------------------------------------------------#ifndef U_MainH
#define U_MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TFrm_Main : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TFrm_Main(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFrm_Main *Frm_Main;
//---------------------------------------------------------------------------
#endif
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class user{
String USER_ID;
String USER_CODE;
String USER_NAME;
String USER_STATE;
String USER_PASSWORD;
String USER_DESC;
public void show_action(){
USER_ID = "1";
USER_CODE = "liusp";
USER_NAME = "liusp";
USER_STATE = "1";
USER_PASSWORD = "stone";
USER_DESC = "liusp";
}}
http://java.sun.com/docs/books/tutorial/native1.1/concepts/index.html一般大概步骤:
1.编写java文件--与dll交互接口
2.用javah生成c++的.h文件
3.通过.h生成dll代码,如果用到其它dll,那只能在javah产生的dll中调用。
4.编写java与c++两边的实现代码。
#define PATH_SEPARATOR ';'
#else /* UNIX */
#define PATH_SEPARATOR ':'
#endif#define USER_CLASSPATH "." /* where Prog.class is */ JNIEnv *env;
JavaVM *jvm;
MS_JDK1_1InitArgs vm_args;
jint res;
vm_args.nVersion = 0x00010001; JNI_GetDefaultJavaVMInitArgs(&vm_args);
sprintf(classpath, "%s%c%s",
vm_args.pcszClasspath, PATH_SEPARATOR, USER_CLASSPATH); vm_args.pcszClasspath = classpath; res = JNI_CreateJavaVM(&jvm,&env,&vm_args);
if (res < 0) {
ShowMessage( "Can't create Java VM\n"); }
这是什么意思? 你的版本是 1.1?还有 你的方式是 C++ 还是用C 如果是C这个需要改一下吧 1.2以后
res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);我也不清楚,属于低手,如果说错了,还请诸位大虾们指教
jclass jclassStartup = env->FindClass(sStartupClass.c_str());
if (jclassStartup == NULL) {
string sErrorMessage ="找不到启动类[" +sStartupClass + "]";
ShowMessage(sErrorMessage.c_str());
}
为什么总找不到该类?