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

解决方案 »

  1.   

    java:package com/sun/test;/**
     * @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";
    }}
      

  2.   

    JNI信息
    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++两边的实现代码。
      

  3.   

    5.dll一般放在system32系统目录或当前目录
      

  4.   

    GJA106(中文字符) :     我是从C++中调用JAVA类及方法,也要调DLL吗?我的方法实现都在JAVA里,C++这边只管调用,是一回事吗?
      

  5.   

    直接通过c++/vc++调用java是不可能的,只能通过javah生成的.h来作文章,在生成的.h中,还是可以直接调用java类和方法的,是用sun的c++库,提供有h文件。楼主还是去http://java.sun.com/docs/books/tutorial/native1.1/concepts/index.html看一下,肯定可以。
      

  6.   

    可以肯定是可以,因为我们做的系统都已经上这么做的了,就是JNI层没有代码,所以想知道
      

  7.   

    想看代码,难啊。不知道%JAVA_HOME%\include\下的代码能不能满足楼主!!
      

  8.   

    #ifdef _WIN32
    #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");    }
      

  9.   

    看来我提的问题,知道的人不多,那就问一个具体的问题吧,怎么创建一个JVM,上述是我的代码,但是创建不成功,希望有人能帮我解决
      

  10.   

    vm_args.nVersion = 0x00010001;
    这是什么意思? 你的版本是 1.1?还有 你的方式是 C++ 还是用C 如果是C这个需要改一下吧 1.2以后
         res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);我也不清楚,属于低手,如果说错了,还请诸位大虾们指教
      

  11.   

    还是没有人能解决,那就再问一个问题吧 string sStartupClass = "com/User";
     jclass jclassStartup = env->FindClass(sStartupClass.c_str());
     if (jclassStartup == NULL) {
            string sErrorMessage ="找不到启动类[" +sStartupClass + "]";
            ShowMessage(sErrorMessage.c_str());
     }
    为什么总找不到该类?