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 3 von 5     123 45      
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 5. Sep 2006, 21:02
Danke, ich werde es morgen an der Arbeit ausprobieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 6. Sep 2006, 09:58
Zitat von Der_Unwissende:
Es liegt daran, dass das Erzeungen der JVM nicht gelinkt werden kann. Statisch ist dies auch nicht möglich, da du auf jedem System die jvm an einem anderen Ort finden wirst.
Und warum wird das in den Beispielen nie gemacht? Also scheint es doch auch statisch irgendwie funktionieren zu müssen.

Zitat:
Du musst die Methode JNI_CreateJavaVM gegen die jvm.dll linken.
Mal sehen, ob ich das hinbekomme.
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
 
#23

Re: JNI gesucht

  Alt 7. Sep 2006, 14:21
Hi,
ich war mal so frei, mich ein wenig an C zu probieren. Bitte keine Kommentare dazu, dass man das alles besser und schöner hätte machen können, sehe ich genauso, aber wie gesagt C und ich sind nicht die besten Freunde. Da ist mir schon C++ sympatischer (kann man wenigstens Objekte verwenden).
Na ja, jedenfalls klappt das so bei mir ohne Probleme.
Hier wird zur Laufzeit der Pfad zur DLL ermittelt und hier dynamisch die Methode geladen. Da du selbst viel mit der Windows-API gearbeitet hast und auch C kannst, sollte alles für dich verständlich sein. Insbesondere solltest du schauen, ob ich überhaupt sauber den Speicher freigebe, den ich verwende.
Ups, da fällt mir gerade ein, ich verwende an einer Stelle ein calloc, da sorge ich wirklich nicht für die Freigabe, peinlich.

Na ja, wäre schon mal die erste Stelle, die du korrigieren kannst

Gruß Der Unwissende
Angehängte Dateien
Dateityp: zip jvm_test_535.zip (2,1 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 7. Sep 2006, 14:25
Besten Dank. Ich habe es in der Zwischenzeit mit Delphi probiert. Mal sehen, wenn der Chef einsichtig ist, kan nich dabei bleiben.
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
 
#25

Re: JNI gesucht

  Alt 7. Sep 2006, 16:11
Zitat von Luckie:
Besten Dank. Ich habe es in der Zwischenzeit mit Delphi probiert. Mal sehen, wenn der Chef einsichtig ist, kan nich dabei bleiben.
Hatte ich ja gesehen (hatte glaube ich auch auf den anderen Beitrag geantwortet, bin mir nicht sicher, hatte das Semikolon geholfen?)
Jedenfalls ist das hier eh der Punkt, ab dem ich dir von C abraten würde, env und jvm enthalten Zeiger auf Objekte, da kannst du dann deinem Chef auch sagen, dass du eh nicht um eine OO Sprache rum kommst (nicht wirklich schön jedenfalls) und dazu fällt mir nur ein:
Zitat von Alan Kay:
Ich habe den Ausdruck »objektorientiert« eingeführt und kann Ihnen versichern, dass ich dabei nicht an C++ gedacht haben.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 9. Sep 2006, 02:10
Na ja, was das mal werden soll, kannst du hier nachlesen: http://www.michael-puff.de/Developer...lloWorld.shtml

Ich muss das dann noch irgendwie an die xfire Schnittstelle des Webserviceses dranklemmen. Und dann soll die DLL noch universell einsetzbar sein, also nicht auf einen Webservice speziell zugeschnitten ein. Das wird noch richtig lustig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 11. Sep 2006, 10:53
Ich habe mir mal deine Test-C-Dateien angeguckt. Wie nutze ich diese jetzt?
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
 
#28

Re: JNI gesucht

  Alt 11. Sep 2006, 11:12
Wie meinst du das denn?
Also wenn du bei dir das Programm übersetzen und linken kannst, bekommst du eine .exe die beim Start einfach eine JVM und ein JniEnvironment erzeugt. Das ist auch so ziemlich alles, was du brauchst. Die Funktionen (die du in der Doku und in der JNI.pas) findest, kannst du damit "wie gewohnt" aufrufen.
Du hast ja grob soetwas:
Code:
jfieldID GetFieldID(JNIEnv *env, jclass clazz, const char *name, const char *sig);
Dabei ist dann clazz natürlich schon gültig und über findClass gesucht worden, dann ist dir hier nun alles bekannt und du bekommst eine gültige FielId. Mittels dieser kannst du dann die Fuktion get<T>Field aufrufen, wobei T dann der Datentyp ist, also z.B. getIntField.

Ja, das war's dann.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: JNI gesucht

  Alt 11. Sep 2006, 13:12
Ich habe jetzt deine Funktionen genommen und bei mir in das Programm eingebaut, sprich reinkopiert. Den entsprechenden Aufruf habe ich angepasst:
Code:
status = createJavaVm(jvm, env, &path[0]);
Leider bekomme ich dieses Windows Fenster zu sehen: "foobar.exe hat ein Problem festgestellt und muss beendet werden." Ich kann aber im Moment noch nicht sagen, woran es liegt, da ich noch nicht rausgefunden habe, wie man mit Eclipse debuggt. Bzw. wenn ich es versuche, bekomme ich von Eclipse die Meldung: "Launching failed", mit de rich im Moment nochnichts anfangen kann.
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
 
#30

Re: JNI gesucht

  Alt 11. Sep 2006, 13:46
Was genau hast du denn angepasst?
Also lässt du immer noch den Pfad über die Registry ermitteln? Ist Path dann gültig? (also auch der Wert, einfach mal ausgeben).

Ja, könnte jetzt nur gut weiterraten, aber das hilft ja dann auch nicht viel. Läuft denn das Programm das ich dir geschickt hatte überhaupt? Wenn ja, dann lager doch den Teil, den du brauchst aus (würde ich dir eh empfehlen). Leg dann eine Methode an, die die JVM und das JniEnv erzeugt (und eine die es auch wieder frei gibt). Ja, mit C++ oder Delphi hast du da immer noch klare Vorteile (was hat dein Chef an denen auszusetzen?!).

Jedenfalls kann ein solcher Fehler an mehreren Dingen liegen (etwas fuzzy und vielleicht nicht vollständig oder richtig):
  • Pfad zur Dll ist ungültig
  • jvm oder env sind ungültig, hier ist es wichtig nicht einen Zeiger auf einen Zeiger oder so zu übergeben sondern den Zeiger auf die JavaVM Struktur bzw. das JNIEnv.
  • Deine jvm ist irgendwo lokale Variable, dann wird die mit dem verlassen der Methode auch aufgeräumt...

Wären jetzt so die ersten Punkte die mir einfallen. Musst du mal schauen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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:31 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