Autor Thema: Fehler bei Swing-Gui  (Gelesen 3673 mal)

botschi

  • Gast
Fehler bei Swing-Gui
« am: 04.09.07 - 15:54:32 »
Hallo,

ich habe folgendes Problem bei der Verwendung von notes.jar mit einer Java-Anwendung:
Wenn ich aus einer Konsolenanwendung heraus eine Session öffne funktioniert alles wunderbar.
Sobald es sich aber um eine Anwendung mit Swing-Gui handelt bekomme ich beim Öffnen der Session sofort einen Fehler.

Ich vermute das es vielleicht etwas mit den Threads zu tun hat in denen die Anwendung läuft.

Anbei die Fehlermeldung:

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x60007652, pid=1728, tid=232
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_03-b07 mixed mode)
# Problematic frame:
# C  [nnotes.dll+0x7652]
#

Stack: [0x0fe50000,0x0fe90000),  sp=0x0fe8e430,  free space=249k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [nnotes.dll+0x7652]
C  [nnotes.dll+0x188a43]
C  [nnotes.dll+0x188b6d]
C  [NLSCCSTR.DLL+0xf7b6]
C  [NLSCCSTR.DLL+0xf054]
C  [NLSCCSTR.DLL+0xf4b6]
C  [nlsxbe.dll+0x21d89]
C  [nlsxbe.dll+0x7d7d5]
C  [nlsxbe.dll+0x7f3ce]
C  [nlsxbe.dll+0x803d8]
C  [nlsxbe.dll+0x44bb0]
j  lotus.domino.local.Session.NgetDatabase(Ljava/lang/String;Ljava/lang/String;Z)I+0
j  lotus.domino.local.Session.getDatabase(Ljava/lang/String;Ljava/lang/String;)Llotus/domino/Database;+13

Matthias
« Letzte Änderung: 05.09.07 - 11:42:27 von botschi »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Fehler bei Swing-Gui
« Antwort #1 am: 04.09.07 - 18:46:26 »
Das kann eigentlich nichts mit Swing oder Konsolen-Anwendung zu tun haben.
Startest du die Swing Anwendung von dem gleichen Rechner? 
Sieht so aus als ob da in der PATH Variable des Betriebssystems die falsche Notes Version vorne steht.
Wie sieht die PATH Variable in der Umgebung aus, in der du die Swing Anwendung startest?

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

botschi

  • Gast
Re: Fehler bei Swing-Gui
« Antwort #2 am: 05.09.07 - 11:42:18 »
Funktioniert jetzt.
Die Klasse, die die Funktion ausführt, erbt von der Klasse "Notesthread" und damit gehts jetzt.

Danke für die Hilfe!

Matthias

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Fehler bei Swing-Gui
« Antwort #3 am: 05.09.07 - 14:44:24 »
Der Fehler liegt wahrscheinlich daran, dass du Swing Threading nicht verstanden hast.

Ohne Code ist es natürlich nur Kaffeesudleserei, aber ich denke, dass du zwar deinen Anwendungsthread für Notes initialisiert hast, nicht jedoch den Eventthread von Swing. Dies ist nicht ganz einfach, man sollte das aber unbedingt verstehen. Ebenso wie man Recycle verstehen sollte, da sonst die Programmierung von Notes Swing voll in die Hose geht.

Ausserdem sollte man meiner Meinung nach in der Notesprogrammierung Swing nicht mehr verwenden, da Notes selber in Richtung SWT geht. Wobei aber in SWT die selben Probleme mit dem Threading zu meisten sind wie in Swing.

Wenn du einen Beispielcode postest, sage ich dir wie du es machen musst.


Grüße

Ralf M Petter
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

botschi

  • Gast
Re: Fehler bei Swing-Gui
« Antwort #4 am: 06.09.07 - 11:10:59 »
Hallo,

erstmal danke für die Antwort. Kannst Du mir mal ein Beispiel für die Threadinitialisierung unter Swing posten.

Ich benutze nur den Aufruf:
Code
NotesThread.sinitThread();

Muss ich noch etwas anderes machen ??


Matthias

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Fehler bei Swing-Gui
« Antwort #5 am: 06.09.07 - 11:24:30 »
Ich glaub Ralf meint eher den Aufruf von Business-Logik (in deinem Fall was in Notes gemacht wird) aus einer Swing Gui ohne das letztere einfriert.
http://www.galileocomputing.de/openbook/javainsel6/javainsel_14_024.htm#mjb965381f58560b47f2662ee6638ea91c
 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

botschi

  • Gast
Re: Fehler bei Swing-Gui
« Antwort #6 am: 06.09.07 - 11:28:39 »
Hallo Axel,

dann habe ich das falsch verstanden.

@Ralf: Meintest Du das was Axel gepostet hat ?

Die Aktualisierung der GUI funktioniert einwandfrei.
Es kam halt bloss diese Fehlermeldung hoch, mit der ich nichts anfangen konnte.

Matthias



« Letzte Änderung: 06.09.07 - 11:39:07 von botschi »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Fehler bei Swing-Gui
« Antwort #7 am: 06.09.07 - 11:51:40 »
Für wirklich ernsthafte Anwendungen wie Ralf sie mit Swing programmiert hat, könnte der Meinung sein, dass Aufrufe auf Lotus Notes aus einer Swing Gui ohne invokeAndWait oder invokeLater gar nicht "richtig" funktionieren können, obwohl es zufällig so aussieht als ob.
Wenn ich heute etwas neues lerne wie z.B. JSF, Groovy oder Grails, benutze ich immer gute vorhandene Beispielanwendungen. Gibts natürlich für Swing gegen Notes nicht wirklich. Zumindest sind mir keine bekannt.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Fehler bei Swing-Gui
« Antwort #8 am: 06.09.07 - 12:12:57 »
Ich meine, dass du wie Axel schon geschrieben hat, jeden Thread, also sowohl den Eventthread als auch jeden anderen Thread für Notes wieder initialsieren musst, und auch wieder richtig terminieren musst. Gerade beim Event thread ist das aber ein wenig schwierig, da ja alle möglichen Events kommen können und auch mehrere Javaprogramme in einer JVM laufen können. Wenn ich es noch einmal machen würde, dann würde ich sämtlichen Notes Code in einem eigenen Thread laufen lassen, der dann wie Axel geschrieben hat, die Swing Gui mit InvokeLater aktualisiert. Zugriffe auf Swingobjekte von einem anderen Thread würde ich vermeiden wie der Teufel das Weihwasser.

Grüße

Ralf

P.S. Und nicht vergessen, Swing ist nicht gut unter Eclipse. Gibt zwar Integrationswerkzeuge aber die sind Murks. Also spätestens mit Notes 8 sollte man sowieso SWT verwenden, wo bei dann aber wirklich geile Sachen möglich sind. Auch wenn Swing SWT meiner Meinung nach in den meisten Punkten überlegen ist.
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Fehler bei Swing-Gui
« Antwort #9 am: 07.09.07 - 10:53:37 »
Es ist ein bischen dappisch sich als Anfänger mit Swing zu beschäftigen.
Es liegt nahe, weil irgendwie will man ja mit seiner Anwendung kommunizieren und dann nimmt man eben Swing.
BUT: Swing ist kompliziert (innere Klassen,  Event Handler,  die man anmelden muss,  komplizierteres Threading-Zeugs als mit Webandungen, komplizierte Klassen, kompliziertes Zusammenspiel der Klassen und und und. 
So entstehen urban legends wie "in Java muss man alles selber machen".

Weniger frustrierend ist imho ein anderes Vorgehen: 
Einfach eine kleine und zielgerichtete API wie z.B. jexel (für Excel Zugriffe) nehmen und sich dann in die Junit-Tests Unterstützung für Eclipse ein bischen einlesen. Nicht mit Testdriven Development anfangen. Einfach für jede Funktion, die man proggen will, EINEN Junit Test schreiben. Z.B.: Alle Reihen einer Excel-Datei in eine ArrayList von selbstgeschriebenen Objekten schreiben. Das Programm startet man dann in Eclipse aus der Junit-Test Klasse und gibt das Ergebnis per System.out.println raus.  Eclipse besitzt für Junit-Testklasse einen Wizzard. Einfach bis zum letzten Screen durchklicken und als Test nur eine Methode anklicken (die wo die ganze gewünschte Funktionalität erledigt).  Das ist imho auch viel realistischer für Notes Entwickler,  da die Einbindungsmöglichkeiten für Java in Release 6 deutlich gestiegen sind.   
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz