AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JNI gesucht

Ein Thema von Luckie · begonnen am 5. Sep 2006 · letzter Beitrag vom 18. Okt 2006
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

JNI gesucht

  Alt 5. Sep 2006, 11:05
Ich muss mit einem C-Programm eine Java Methode aufrufen. das geht mit JNI (Java Native Interface). Doch wo bekomme ich die jni.h Datei und alles, was ich sonst noch so dazu brauche? Ich habe schon dne ganzen Morgen gegoogelt, aber irgendwie keinen Download gefunden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#2

Re: JNI gesucht

  Alt 5. Sep 2006, 11:07
You've got mail.
Servus...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: JNI gesucht

  Alt 5. Sep 2006, 11:39
Hi,
ich kann dir hier nur die Seite SUN empfehlen. Möchte hier nicht einfach nur auf den hersteller verweisen, aber du findest dort das SDK und dessen Doku und Letzteres ist echt gut geschrieben. Gerade JNI fand ich sehr gut behandelt. Jedenfalls findest du dort auch alle Möglichkeiten und die Umsetzung in C (und die verwendeten Datentypen usw.).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: JNI gesucht

  Alt 5. Sep 2006, 12:47
Ich habe jetzt folgendes Java Programm:
Code:
public class HelloWorld {
    public static void main(String[] argv) throws Exception
    {
       HelloWorld test = new HelloWorld();
       int res = test.Test();
       
       System.in.read();
       
       System.out.print(res);
    }
   
    public int Test()
    {
       System.out.print("Hello, world\n");
       return 42;
    }
}
Dazu das C-Programm:
Code:
#include <stdio.h>
#include "jni.h"

int main()
{
   JavaVMOption options[1];
   JNIEnv *env;
   JavaVM *jvm;
   JDK1_1InitArgs vm_args;
   long status;
   jclass cls;
   jmethodID mid;
   jint square;
   jboolean not;

   options[0].optionString="-Djava.class.path=.";
   memset(&vm_args, 0, sizeof(vm_args));
   vm_args.version = JNI_VERSION_1_2;
   vm_args.nOptions = 1;
   vm_args.options = options;
   status = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);

   if (status != JNI_ERR)
   {
      cls = (*env)->FindClass(env, "HelloWorld");
      if (cls != 0)
         {mid = (*env)->GetStaticMethodID(env,cls,"Test","(I)I");
      if (mid != 0)
         {square = (*env)->CallStaticIntMethod(env,cls,mid,5);
      printf("Result of int Method:%d\n", square);

      (*jvm)->DestroyJavaVM(jvm);
      return 0;
   }
   else
      return -1;
}
#include <stdio.h>
#include "jni.h"

int main()
{
   JavaVMOption options[1];
   JNIEnv *env;
   JavaVM *jvm;
   JDK1_1InitArgs vm_args;
   long status;
   jclass cls;
   jmethodID mid;
   jint square;
   jboolean not;

   options[0].optionString="-Djava.class.path=.";
   memset(&vm_args, 0, sizeof(vm_args));
   vm_args.version = JNI_VERSION_1_2;
   vm_args.nOptions = 1;
   vm_args.options = options;
   status = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);

   if (status != JNI_ERR)
   {
      cls = (*env)->FindClass(env, "HelloWorld");
      if (cls != 0)
         {mid = (*env)->GetStaticMethodID(env,cls,"Test","(I)I");
      if (mid != 0)
         {square = (*env)->CallStaticIntMethod(env,cls,mid,5);
      printf("Result of int Method:%d\n", square);

      (*jvm)->DestroyJavaVM(jvm);
      return 0;
   }
   else
      return -1;
}
Nur leider erkennt er die Datentypen JavaVMOption und JavaVMInitArgs nicht. Sie sind auch nicht in der jni.h datei zu finden. Den Code hab eich zwei PDFs. Lider wird da nicht gesagt, welche jni.h Datei verwendet wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: JNI gesucht

  Alt 5. Sep 2006, 13:02
Die jni.h findest du im JDK im include Verzeichnis. Die enthält (zumindest im JDK 1.5) auf jedenfall auch die Datentypen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: JNI gesucht

  Alt 5. Sep 2006, 13:05
Ist das richtig, dass das JDG ca. 123 MB groß ist? dann dauert das noch eine Weile, bis ich das habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: JNI gesucht

  Alt 5. Sep 2006, 13:09
JDG? Also das JDK ist im Download so in der Größe, auf der Platte gut 250 MByte, schon das JRE ist um die 130 MByte groß.
Ohne schnelle Leitung macht da Java auch gar keinen Spaß!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: JNI gesucht

  Alt 5. Sep 2006, 13:19
Ja, JDK meine ich: java_ee_sdk-5-windows.exe
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: JNI gesucht

  Alt 5. Sep 2006, 13:37
Hm,
brauchst du wirklich die EE (Enterprise Edition?). Also Java unterscheidet hier die MicroEdition (für den Embedded Bereich gedacht, abgspeckter Funktionsumfang), die J2SE (Standard Edition), wird in der Regel als JDK bezeichnet und die J2EE (Enterprise Edition).
Letztere enthält eine Menge an Enterprise Logik. Da kommen dann EnterpriseBeans zum Einsatz. Diese laufen in einer speziellen Umgebung (in einem Container). Die ermöglicht halt Skalierungen und Sicherheitsfeatures und nimmt dir komplett die Logik der Nebenläufigkeit ab (und und und). Dazu musst du die aber auch in einer Implementierung eines EE-Servers laufen lassen (Stichwort JBoss u.A.).

Für die sollte eigentlich die J2SE reichen (wenn du nur Java + JNI verwenden möchtest).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: JNI gesucht

  Alt 5. Sep 2006, 13:38
Habe ich auch gerade gemerkt. Ich lade mir jetzt die SE Version runter. Werde ja dafür bezahlt, dass ich dem Download zu gucke.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz