|
| JVM og JNI og C (2) Fra : David Poulsen |
Dato : 26-06-02 11:32 |
|
Davs igen derude
Her er koden som jeg prøver at compile under MSVC 6.0 Standard og det funger
fint nok men når jeg kører programmet så crasher det:
#include <jni.h>
#include <stdio.h>
void main(){
JavaVM *vm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=.";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = 1;
jclass cls;
jobject obj;
char *cstr;
jint res = JNI_CreateJavaVM(&vm, (void **)&env,&vm_args);
if (res < 0) {
printf("Can't create Java VM\n");
}
cls = env->FindClass("Prog"); /*The name of class in Java*/
if (cls == 0) {
printf("Can't find Prog class\n");
}
jmethodID mid = env->GetMethodID(cls, "Yup","(I)Ljava/lang/String;"); /*
Search the Method of class*/
if (mid == 0) {
printf("Can't find Yup() method\n");
}
/* Create a object to class */
jobject obj_java = env->NewObject(cls,mid);
jstring str_java = (jstring) env->CallObjectMethod(obj_java,mid,vm_args);
if (str_java !=0)
{
const char *retorno = env->GetStringUTFChars(str_java,0);
}
vm->DestroyJavaVM();
}
Og jeg ved ærlig talt ikke hvad jeg skal gøre...
Jeg kører på Win2k, og den generer windows fejl hvor der står at den ikke
kan "write"
Takker for hjælpen
--
Best regards / Med venlig hilsen
David Poulsen
Email: dpoulsen@e-box.dk
ICQ: 150873892
| |
Dennis Thrysøe (26-06-2002)
| Kommentar Fra : Dennis Thrysøe |
Dato : 26-06-02 12:16 |
|
David Poulsen wrote:
> Davs igen derude
>
> Her er koden som jeg prøver at compile under MSVC 6.0 Standard og det funger
> fint nok men når jeg kører programmet så crasher det:
[SNIPPED CODE]
Ved du i hvilken linie i dit program den går ned. Er det under selve
invokeringen? (env->CallObjectMethod()).
> Jeg kører på Win2k, og den generer windows fejl hvor der står at den ikke
> kan "write"
Det siger nok ikke så meget. JVM'en (eller måske dit program) forsøger
at skrive et sted i hukommelsen, der er uden for den aktuelle proces.
Har du initializeret alle datastrukturer du giver med til JVM'en med
noget fornuftigt? Hvis der er nogle tilfældige/default værdier rundt
omkring opstår den slags problemer typisk.
Så vidt jeg husker kan JVM'en godt finde på at går ned, hvis bare man
opfører sig lidt forkert. Hvis noget f.eks. går galt i Java programmet,
og man ikke tager højde for at der kan kastes en exception.
Jeg har vedhæftet en indpakning af JVM skrevet i Pascal.
-dennis
| |
David Poulsen (26-06-2002)
| Kommentar Fra : David Poulsen |
Dato : 26-06-02 13:13 |
|
"Dennis Thrysøe" <dt@netnord.dk> skrev i en meddelelse
news:3D19A266.5070603@netnord.dk...
> David Poulsen wrote:
> > Davs igen derude
> >
> > Her er koden som jeg prøver at compile under MSVC 6.0 Standard og det
funger
> > fint nok men når jeg kører programmet så crasher det:
>
> [SNIPPED CODE]
>
> Ved du i hvilken linie i dit program den går ned. Er det under selve
> invokeringen? (env->CallObjectMethod()).
>
> > Jeg kører på Win2k, og den generer windows fejl hvor der står at den
ikke
> > kan "write"
>
> Det siger nok ikke så meget. JVM'en (eller måske dit program) forsøger
> at skrive et sted i hukommelsen, der er uden for den aktuelle proces.
>
> Har du initializeret alle datastrukturer du giver med til JVM'en med
> noget fornuftigt? Hvis der er nogle tilfældige/default værdier rundt
> omkring opstår den slags problemer typisk.
>
> Så vidt jeg husker kan JVM'en godt finde på at går ned, hvis bare man
> opfører sig lidt forkert. Hvis noget f.eks. går galt i Java programmet,
> og man ikke tager højde for at der kan kastes en exception.
>
> Jeg har vedhæftet en indpakning af JVM skrevet i Pascal.
>
> -dennis
>
Jeg vil kigge din vedhæftede fil igennem .
Men jeg mener at jeg har gjort det lige efter en tutorial fra javaworld.com
Mange tak
--
Best regards / Med venlig hilsen
David Poulsen
Email: dpoulsen@e-box.dk
ICQ: 150873892
| |
|
|