🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.language
Article #17612

JNI question, out of context but....

#17612
From: Peter Meulmeester
Date: Tue, 27 Oct 1998 00:00
99 lines
2923 bytes
Hi,

Does anyone have the invoke.c sample from the Java tutorial working?
(it builds your own java.exe. I need this to be able to debug my native
methods
which are in a Windows DLL)

I keep on getting:
Can't find class java.lang.NoClassDefFoundError. (Wrong class path?)
no matter how I set the classpath or initialization struct.

I am using jdk1.2beta4, Visual C++ 6.00, and evaluating Jbuilder2 for our
company.

Here is my code,
best regards,
Peter
------------------
#include <jni.h>
#include <stdlib.h>

#ifdef _WIN32
#define PATH_SEPARATOR ';'
#else /* UNIX */
#define PATH_SEPARATOR ':'
#endif

#define USER_CLASSPATH "." /* where Prog.class is */

int main(int argc, char *argv[]) {

    JNIEnv *env;
    JavaVM *jvm;
    JavaVMInitArgs vm_args;
    jint res;
    jclass cls;
    jmethodID mid;
    jstring jstr;
    jobjectArray args;

 JavaVMOption options[4];

    /* IMPORTANT: specify vm_args version # if you use JDK1.1.2 and beyond
*/

 options[0].optionString = "-Djava.class.path=c:\\Program
Files\\JBuilder2\\myprojects\\untitled3;.";
 options[1].optionString = "-verbose:class,gc,jni";
 options[2].optionString = "-Djava.library.path=c:\\Program
Files\\jdk1.2beta4\\lib\\tools.jar;c:\\Program
Files\\JavaSoft\\JRE\1.2\\lib\\rt.jar";

 vm_args.version = JNI_VERSION_1_2;
 vm_args.options = options;
 vm_args.nOptions = 3;
 vm_args.ignoreUnrecognized = 0;




    /* Create the Java VM */
    res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
    if (res < 0) {
        fprintf(stderr, "Can't create Java VM\n");
        exit(1);
    }

    cls = (*env)->FindClass(env, argv[1]);
    if (cls == 0) {
        fprintf(stderr, "Can't find %s class\n", argv[1]);
        exit(1);
    }

    mid = (*env)->GetStaticMethodID(env, cls, "main",
"([Ljava/lang/String;)V");
    if (mid == 0) {
        fprintf(stderr, "Can't find %s.main\n", argv[1]);
        exit(1);
    }

    jstr = (*env)->NewStringUTF(env, " from C!");
    if (jstr == 0) {
        fprintf(stderr, "Out of memory\n");
        exit(1);
    }
    args = (*env)->NewObjectArray(env, 1,
                        (*env)->FindClass(env, "java/lang/String"), jstr);
    if (args == 0) {
        fprintf(stderr, "Out of memory\n");
        exit(1);
    }
 printf("argv[1] = %s\n", argv[1]);

    (*env)->CallStaticVoidMethod(env, cls, mid, args);

    (*jvm)->DestroyJavaVM(jvm);

}
Technical Details
Message-ID: <714467$9pb4@forums.borland.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f74b3,5d814ff95bf64833,start
X-Google-Attributes: gidf74b3,public
From: "Peter Meulmeester" <pmeulm@wirehub.nl>
Subject: JNI question, out of context but....
Date: 1998/10/27
Message-ID: <714467$9pb4@forums.borland.com>
X-Deja-AN: 405504191
Organization: Another Netscape Collabra Server User
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Newsgroups: borland.public.jbuilder.java.language