Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
LS2J: Java-Konstruktor aufrufen
magic_halli:
Hi,
ich lese aus einem Maildokument verschiedene Werte aus - in einem LS-Agent.
Diese Werte will ich in Java verarbeiten. Der Aufruf meiner Java-Klasse und die Wertübergabe erfolgt mit LS2J.
Nur habe ich ein Problem beim Starten der Java-Anwendung. Wenn der Agent einen Konstruktor starten soll, kommt die Meldung "LS2J error: Java constructor failed to execute".
Die Frage ist nur, warum kommt diese Meldung?
Hier mal der LS-Agent mit dem Teil des Java-Aufrufs inkl. Parameterübergabe:
--- Code: ---' Parameter werden weiter oben bereits ausgelesen
' ...
Dim jSession As JavaSession
Dim jClassSucheGUI As JavaClass
Dim jObjectSucheGUI As JavaObject
Set jClassSucheGUI = jSession.GetClass("SucheGUI")
' Konstruktor-Aufruf mit Parameterübergabe
Set jObjectSucheGUI = jClassSucheGUI.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"
,server,serverport,user,pass,subj,sender,body)
--- Ende Code ---
Ist doch erstmal richtig?
Hier die Javaklasse/Konstruktor, der ausgeführt werden soll:
--- Code: ---public class SucheGUI extends JFrame{
public SucheGUI( String server, String serverport, String user, String pass, String subj, String sender, String body ) {
//tue etwas
}
}
--- Ende Code ---
Mh, ich kanns mir nicht erklären, was falsch sein soll?!?! ???
Danke und Gruß
Ralf_M_Petter:
Dein Code kann nicht funktionieren, da jSession nicht initialisiert wird.
Probier es mal mit
set jSession=new JavaSession()
Grüße
Ralf
magic_halli:
--- Zitat ---Dein Code kann nicht funktionieren, da jSession nicht initialisiert wird.
--- Ende Zitat ---
Sorry, hatte das leider nur im Post versehentlich nicht mit eingefügt... die Session wird natürlich initialisiert!
--- Code: ---
' Parameter werden weiter oben bereits ausgelesen
' ...
Dim jSession As JavaSession
Dim jClassSucheGUI As JavaClass
Dim jObjectSucheGUI As JavaObject
Set jSession = New JavaSession()
Set jClassSucheGUI = jSession.GetClass("SucheGUI")
' Konstruktor-Aufruf mit Parameterübergabe
Set jObjectSucheGUI = jClassSucheGUI.CreateObject("(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"
,server,serverport,user,pass,subj,sender,body)
--- Ende Code ---
magic_halli:
Ich hab jetzt mal in den LS-Agent um den Konstruktoraufruf ein ErrorHandling gebaut, welches mir sämtliches Zeug ausgibt und alles nochmal im DebugModus ausgeführt.
--- Code: ---' Code wie oben
...
ErrorHandling:
Set jError = jSession.getLastJavaError
Print Error
Print myError.ErrorMsg
Print myError.StackTrace
End Sub
--- Ende Code ---
In ErrorMsg steht "java.lang.SecurityException: Beenden mit Code 0"! AHA?!?! Sagt mir nicht viel...
Ich hab in den Eigenschaften des Agent unterm Reiter mit den Sicherheitsoptionen daraufhin alle 3 Optionen durchprobiert - leider ohne Erfolg! Die Meldung ist nach wievor die gleiche.
Ich kappiers einfach nicht :o
EDIT:
Vermutung --> Hat vielleicht Notes ein (Sicherheits-)Problem damit, wenn ein JavaProgramm ein JavaFenter darstellen will? ...das tut nämlich letztendlich mein JavaProgramm (mittels Swing).
flaite:
--- Code: ---public class SucheGUI extends JFrame{
--- Ende Code ---
Bitte was soll das extends JFrame?
Du startest damit eine Swing-Gui in einem eigenen Thread.
Dafür ist LS2J nicht gedacht!
Es ist eher so, dass du damit mit einem Plain Old Java Object kommunizieren kannst. Keine komplexen Konstrukte wie Swing-Guis. Ich halte es für recht wahrscheinlich, dass daher die Security Exception geworfen wird.
Du kannst auch mit LS2J keine Swing Guis starten.
Benutz die Notes Mittel (Felder) für die Eingabe und lass die mit LS2J Klasse Backend-Zeugs erledigen.
Solange du dann nicht auf die Idee kommst irgendwelche EJB Klassen oder ähnliches zu erweitern, funktioniert das auch in der Regel.
Gruß Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln