Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: chriss76 am 30.09.05 - 11:25:26

Titel: Local variables unavailable
Beitrag von: chriss76 am 30.09.05 - 11:25:26
Hallo Leutz,

wollte mich langsam mal an Notes und Java heran tasten und habe eines von Euren
Codingbeispielen aus diesem Forum mit Ecplise erstellt.
Leider kriege ich mit Ecplise Debugger immer die Fehlermeldung:
"local variables unavailable" .

Welchen Variablen fehlen mir denn??

Grüsse Chris

Titel: Re: Local variables unavailable
Beitrag von: Gandhi am 30.09.05 - 12:30:26
Den Code solltest Du dann schon anfügen...
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 30.09.05 - 13:06:34
Hallo,


/*
* testprogramm.java
*
* Created on 31. Januar 2003, 10:05
*/
package test;
import lotus.domino.*; //Anweisung um den Java Compiler mitzuteilen, wo er die Notesklassen findet.
/**
*
* @author petter_r
*/
public class TEST1 {

/** Creates a new instance of testprogramm In unserem Beispiel brauchen wir keine Instance */
public TEST1() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NotesThread.sinitThread(); //Beim lokalen Zugriff nicht DIIOP muss der Thread erst für Domino initialisiert werden.
Session ses=null; //Sessionvariable definieren.
try { //Da Notes Klassen Exceptions werfen können sollte man diese auch abfangen.
ses = NotesFactory.createSession(); //Erzeugen eines Sessionobjekts
Database db=ses.getDatabase("Server","mail/meinemail.nsf"); // Öffnen einer Datenbank bitte das anpassen an euer Umfeld z. B. Maildatenbank.
System.out.println("Datenbank hat folgenden Dateiname:"+db.getFileName());
System.out.println("Datenbank wurde zuletzt volltextindiziert am "+db.getLastFTIndexed().toString());

}
catch (Exception e){
System.out.println("Es ist ein Fehler aufgetreten");
e.printStackTrace();
}
finally{
try{
ses.recycle(); // Ganz wichtig, wenn dieser Befehl nicht ausgeführt wird, wird der Speicher den die Notesklassen im Hintergrund verwendet haben nicht mehr freigeben.
}
catch (NotesException e){}
NotesThread.stermThread(); //Domino Umgebung beenden. Ebenfalls ganz wichtig wenn man das nicht macht kann das zu Abstürzen von Notes führen.
}
}

}

Wahrscheinlich fehlen die Systemvariablen in meinem Windows, oder???

Fehlermeldung:
NotesThread.sinitThread()line: 171 [local variables unavailable]

Eine Idee??

Grüsse Chris






Titel: Re: Local variables unavailable
Beitrag von: animate am 30.09.05 - 16:01:25
das [local variables unavailable] bedeutet, dass dir für die Klassen, die du nutzt keine Debug Info zur Verfügung steht. Es beschreibt nicht den Fehler, den du machst.

Poste bitte die vollständige Fehlermeldung, nicht nur eine Zeile davon.
Titel: Re: Local variables unavailable
Beitrag von: flaite am 01.10.05 - 23:14:36
bin mir nicht 100% sicher, aber zu 95%, dass NotesThread.sinitThread() nur für lokale Zugriffe verwendet werden kann.
Willst du nicht damit erst mal arbeiten? Mit lokalen Zugriffen.
Es funktioniert auch, wenn der Server wo anders installiert hast, aber auf dem Rechner auf dem das JavaProgramm läuft ein Notes Client installiert ist, der sich mit dem entsprechenden Server auf dem der Agent verbinden kann.

Ansonsten musst du mit diesem Runnable Zeugs arbeiten.

Code
import lotus.domino.*;
import java.lang.*;

public class agentdebugger implements Runnable
{
public static void main(String argv[])
{
try{
   
agentdebugger ad = new agentdebugger();
NotesThread t =new NotesThread((Runnable)ad);
t.start();
}
catch (Exception e)
{
   e.printStackTrace();
}}
public void run()
{
try
{
Session s = NotesFactory.createSession();
String p = s.getPlatform();
System.out.println("Platform = " + p);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Wobei das nix ist, das ein Java-Anfänger normalerweise in den 6 Monaten nachvollzieht.

Das ist Multithreading.
Die run Methode läuft in einem anderen Thread als das Hauptprogramm.
run() wird ja nirgendwo direkt aufgerufen.
Vereinfacht gesprochen geht der code innerhalb von run() durch das t.start() in einen to-be-run-Status und wird irgendwann ausgeführt.
Wichtig ist das implements Runnable in der Klassendeklaration.
 



Axel
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 03.10.05 - 11:04:33
Hallo!

Das was Axel sagt, ist nicht 100% korrekt. Du musst NotesThread.sinitThread() nehmen wenn du lokalen Zugriff willst. Das heisst, auf der Maschine auf der du dein Java Programm laufen lässt läuft ist entweder ein Client oder ein Server installiert. Wenn du remote Zugriff verwenden willst ist ein initialisieren des NotesThread nicht notwendig. In dem Fall ist dann auch keine Erweiterung von NotesThread nötig, oder der Runnable Schmarren notwendig.

Eventuell wäre es mal günstig wenn du die Frage von Thomas nach der genauen Fehlermeldung beantworten würdest. Eventuell wichtig wäre auch noch wenn du den Klassenpfad posten könntest.

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: flaite am 03.10.05 - 13:31:34
Vielleicht ruft bei Corba Zugriff der Aufruf der Methode automatisch diese Exception?
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 03.10.05 - 13:34:00
Glaube ich persönlich nicht, aber ohne Antworten von Chris ist das sowieso Kaffeesudleserei. Ich hasse sowas. Einen Thread anfangen und dann nicht mehr weitermachen >:(

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: flaite am 03.10.05 - 13:48:59
War Wochenende und heute hat Deutschland frei wg. Tag der deutschen Einheit
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 03.10.05 - 13:51:49
Arbeitest du nicht auch in Deutschland und du bist trotzdem hier. Wenn ich Thread eröffne ist normalerweise nicht zu viel verlangt, auch mal zum Wochenende kurz reinzuschauen. Wenn ich nur antworte mache ich das auch nicht, aber bei Threaderöffnung finde ich das schon angebracht.

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 04.10.05 - 09:00:37
Guten Morgen,

hier bin ich wieder, machte aber keinen Sinn zu antworten, weil ich dazu meinen Arbeitsrechner brauche und den lege ich am freien Tag meistens ganz weit weg.

1. Vielen Dank für Euer Engagement, allerdings überfordert Ihr mich als
Unwissenden ein wenig.

2. Ich wollte einfach mal ausprobieren, ob ich mit einer kleinen Java-Applikation auf Notes zugreifen kann. Das war meine Idee.
Meine Notesclient Version ist 5.0.8, auf dem Server läuft 6.xx

3. Ich habe mir einfach mal das Coding hier aus dem Forum geholt und als Projekt in Eclipse eingestellt und wollte sehen, ob es lokal bei mir läuft und auf mein Mailfile, dass auf dem Notesserver liegt, zu greifen kann.

Mit folgender Fehlermeldung könnte ich noch dienen:

Source not found
The jar file Notes.jar has no source attachment.
You can attach the source by clicking Attach Source below.

Was auch immer ich dort anhängen soll?

Vielleicht ist es für den Anfang zu schwierig, habt Ihr ein vielleicht einfach zu realisierendes
Java-Programm, dass auf den NotesServer zugreift als Anschauungsobjekt?

Grüsse Chris
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 04.10.05 - 09:11:53
Dein Problem hat offensichtlich nichts mit Notes zu tun sondern mit der Bedienung des Debuggers von Eclipse. Du versucht offensichtlich die Notes.jar zu debuggen. Diese enthält die Codeteile die für den Zugriff auf die Domino Backend Objekte.

Lass mal das Programm ohne Debugger laufen. Es sollte dir den Dateinamen der Datenbank und das Volltextindexdatum ausgeben. Beim Debuggen musst du aufpassen, dass du beim Schrittweisen vorwärts gehen im Normalfall nicht Step into sondern sondern step over verwendest. Mit step into gehst du nämlich in den Source des Methodenaufrufs und wenn das eine Methode ist, für die du den Source nicht hast, dann kommt die von dir beschriebene Meldung.

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 04.10.05 - 09:55:54
Hallo Ralf,

ich habe das Programm mal ohne Debugging laufen lassen, nur beim ersten Mal
wird das Passwort für meine Notes-ID abgefragt, bei jedem weiteren Aufruf kommt noch nicht mal
die Passwortabfrage. (erst wenn ich den Notes Client beende und wieder öffne, wird auch das Passwort im Programm wieder abgefragt)
Wenn ich das Passwort eintippt habe, passiert gar nichts mehr.
Keine Fehlermeldungen o.a.
Im Debugging mit Step over das gleiche: Es passiert nichts mehr.

Hast Du noch eine andere Idee?

Grüsse Chris
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 04.10.05 - 10:03:26
Hallo!

Nun das hört sich an, wie wenn das Programm funktionieren würde. Eventuell hast du in Eclipse nur das Fenster nicht offen, das die Consolenausgabe anzeigt. Wenn du mit Stepover drübergehst, kommt er zu den Anweisungen:
System.out.println("Datenbank hat folgenden Dateiname:"+db.getFileName());
System.out.println("Datenbank wurde zuletzt volltextindiziert am "+db.getLastFTIndexed().toString());

Wenn ja dann ist zu 99% alles palleti und du brauchst es nur noch zu schaffen, das Eclipse auch die Ausgabe anzeigt. Die Anzeige müsste eigentlich Konsole heissen.

Grüße

Ralf

P.S. Das die Passwortabfrage nur einmal kommt ist meines Wissens ganz normal.
Titel: Re: Local variables unavailable
Beitrag von: flaite am 04.10.05 - 11:15:39
Das Console-Fenster siehe Screenshot.
Die has no source Attachment Meldung hat etwas damit zu tun, dass du versuchst mit dem Debugger ein "Step into" in eine Notes Methode zu machen. Dafür braucht der Debugger natürlich den Source Code der entsprechenden Klasse. Den hast du natürlich nicht, weil Lotus die Sourcen nicht rausrückt. Benutze dafür "step over". Oder setze Breackpoints und benutze den grünen Pfeil. Nach dieser Meldung terminiert der Debug-Prozess nicht. Das steht sicherlich auch in der Hilfe von Eclipse. Ein bischen lesen muß aus meiner Sicht in diesem Job schon sein.

Menschen sind intelligente Säugetiere und brauchen sich nicht bei den kleinsten Schwierigkeiten immer direkt zu fragen, ob das was sie gerade machen "zu schwierig" ist. Das ist ja auch ein dynamischer Prozess. Sobald man aufhört Probleme ständig als "zu schwierig" zu deklarieren, beginnt man irgendwann Strategien, um die Dinge selbst in den Griff zu kriegen.
Es gibt 2 Möglichkeiten:
1. entweder du entwickelst die Fähigkeit komplexere Probleme zu lösen
2. oder man überträgt einer anderen autoritären Instanz die Entscheidungskompetenz darüber, was für einen zu schwierig ist
 
Axel

Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 04.10.05 - 12:15:34
Hallo Ralf, hallo Peter,

1. Das mit Step into funktioniert ja jetzt ;-)

2. Ich konnte ein bisschen weiter untersuchen:
Session ses=null; //Sessionvariable definieren.
try { //Da Notes Klassen Exceptions werfen können sollte man diese auch abfangen.
ses = NotesFactory.createSession(); //Erzeugen eines Sessionobjekts
Diese beiden Zeilen werden ausgeführt.
Die Variable ses wird mit session (id = 33) o.a. gefüllt, d.h. es sieht so aus, als würde es funktionieren, oder?

Dann springe ich mit Step over zu:
Database db=ses.getDatabase("Server","mail/meinemail.nsf"); // Öffnen einer Datenbank bitte das anpassen an euer Umfeld z. B. Maildatenbank.

Und dann passiert gar nichts mehr.
Anscheinend findet er unseren Notesserver nicht (nicht per Name, auch nicht per IP-Adresse).
Es kommt auch keine Fehlermeldung.
Ich komme also auch gar nicht bis zu den Konsolenausgaben:
System.out.println("Datenbank hat folgenden Dateiname:"+db.getFileName());
System.out.println("Datenbank wurde zuletzt volltextindiziert am

Grüsse Chris

Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 04.10.05 - 12:25:32
Das was du beschreibst, kann so nicht sein.

Falls der Zugriff auf den Server fehlschlagen würde, wäre das Datenbank Objekt "null" und er würde trotzdem zur nächsten Anweisung kommen. Ich vermute mal du hast Probleme mit dem Zugriff auf deine ID. Eventuell fragt er im Hintergrund irgendwo dein Passwort für die ID ab. Probier mal unter der Benutzersicherheit die Einstellung. Andere Notes-bsierende Programme fragen kein Kennwort ab unter der Benutzersicherheit anzuhacken. Dann sollte wenn der Notes Client gestartet ist, kein Problem mehr auftreten.

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 04.10.05 - 13:19:49
Hallo Ralf,

Du hast bestimmt Recht, denn jetzt ist mir erst aufgefallen, dass bei der Abfrage der Passwort-ID der komplette Notes-Client einfriert und ich ihn hart beenden muss.
Wie schon gesagt, beim ersten Zugriff auf meine ID wird in der Console nach dem Passwort gefragt. Dieses tippe ich dann immer ein und bestätige entweder mit Enter oder Return und dann friert der Notes-Client ein.

Zitat
Probier mal unter der Benutzersicherheit die Einstellung. Andere Notes-bsierende Programme fragen kein Kennwort ab unter der Benutzersicherheit anzuhacken. Dann sollte wenn der Notes Client gestartet ist, kein Problem mehr auftreten.

Wo ist denn diese Einstellung im Notes-Client 5.0.8?

Grüsse Chris

Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 06.10.05 - 07:25:34
Weiss denn niemand weiter??

Grüsse Chris
Titel: Re: Local variables unavailable
Beitrag von: flaite am 06.10.05 - 09:51:42
Zur Zeit: Keine Ahnung. Aber ich hab das auch länger nicht gemacht.
Eine Möglichkeit ist, dass es evtl. Probleme gibt, weil dein Eclipse Projekt Java 2 benutzt, Notes 5.08 aber Java 1.1. Du kannst in Eclipse einstellen, dass du Java1.1 benutzt. Poste dazu später.
Titel: Re: Local variables unavailable
Beitrag von: Gandhi am 06.10.05 - 10:03:17
Die Einstellung ist unter User Security zu finden - wenn es das war, was Du wissen wolltest. Direkt auf der ersten Seite.
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 06.10.05 - 10:41:11
Hallo Gandhi,

tut mir leid, aber ich weiss nicht was Du meinst  :-: ??

Zitat
Die Einstellung ist unter User Security zu finden - wenn es das war, was Du wissen wolltest. Direkt auf der ersten Seite.

Ich finde diese Einstellung in meinem Notes-Client nicht!!
Bitte sag mir ganz genau, wo das sein soll! Sorry again!

Grüsse ich
Titel: Re: Local variables unavailable
Beitrag von: Gandhi am 06.10.05 - 10:52:44
File - Security - user security (fenster öffnet sich)
Auswählen des Flags:
Don't prompt for a password from other notes-based programms (reduces security)
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 06.10.05 - 11:12:58
Hallo Gandhi,

ich habe einen 5er Client, bei dem gibt es keine User Security, oder?
Auf dem Testrechner mit Version 6.5 gibt es diese Option, aber da bringt sie mir nichts!

Was kann ich jetzt machen?

Chris
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 06.10.05 - 12:03:24
Die selbe Option gibt es auch beim 5er Client. Leider habe ich jetzt keinen 5er Client hier, aber auf Notes Net beschreibt die Option jemand mit  File/Tools/User ID... select "Don't prompt for a password from other Notes based programs")

Also im Menü Datei , Tools weiß ich jetzt nicht mehr wie die das in Deutsch genannt haben, aber ich denke das wirst du finden und dann User ID.

Falls nicht, melde dich nochmal dann schaue ich ob ich einen 5er wo finde. Sonst einfach mal in der Hilfe suchen  >:D

Grüße

Ralf

P.S. Hätte mich früher gemeldet, aber offensichtlich kommen keine Benachrichtigungen mehr zu diesem Thema obwohl der Hacken gesetzt ist.
Titel: Re: Local variables unavailable
Beitrag von: flaite am 06.10.05 - 12:11:04
Falls es mit der Java1.1 Geschichte zusammenhängt kann man unter Eclipse direkt kein Java1.1 kompilieren (zumindest weiss ich nicht, wie). Dafür kann man prima zwischen Java1.3, 1.4 und 1.5 wechseln.
Java 1.2 kam ca. im September 1999 raus. 
Das sind genau die Dinge, die ich beim Thema Notes & Java so liebe.
Es ist für meinen Geschmack einfach zu viel Gefrickel und Gebolze.
Obwohl neuere Versionen von Notes auch neueres Java unterstützen.
Nur für das Lernen von Java halte ich Notes inzwischen auch aus anderen Gründen als ziemlich problematisch.
Leute, die auf Tomcat oder Websphere arbeiten, lernen Java als eine irgendwie wirklich stabile Sprache kennen. Unter Notes sind da einfach zu viele Bonus Gotchas

Zu dem was Ralf sagt: Datei Extras Notes ID. Checkbox unten. 
Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 06.10.05 - 12:40:07
Hallo Axel!

Danke für die genaue Übersetzung. Notes 5 ist halt schon so lange aus. Der Zugriff von ausserhalb Notes ist auch mit höheren Java Versionen prinzipiell überhaupt kein Problem. Schwierig wird es nur wenn du deinen externen Code versuchst als Agent oder Applet zum laufen zu bewegen. Prinzipiell würde ich aber eh bei Verwendung von Java einen Umstieg auf Notes 6 oder 7 empfehlen. Vor allem weil 5 ja am EOS angelangt ist.

Grüße

Ralf
Titel: Re: Local variables unavailable
Beitrag von: chriss76 am 06.10.05 - 14:06:16
Hallo Leutz,

vielen Dank an alle!
Die Option "Don't prompt for a password from other Notes based programs" kann im 5er Client
unter Datei/Extras/User-ID gefunden werden.
Und ich suche ständig unter irgendwelchen anderen Begriffen!

Nach setzen des Hakens hat die Java-Applikation in Ecplise sofort einwandfrei funktioniert
und mir auf der Konsole des System Outprints angezeigt.
Also alles perfekt.
Vielen Dank nochmal für Eure Geduld und Tipps!!

Grüsse Chris

mit der Hoffnung, dass wir irgendwann mal den 6er Client bekommen!

Titel: Re: Local variables unavailable
Beitrag von: Ralf_M_Petter am 06.10.05 - 14:07:50
Hallo Chriss!

freut mich auch, dass es jetzt funktioniert, aber würde euch empfehlen den 6er auszulassen und gleich auf den 7er zu wechseln. Vor allem Java wurde im 7er wieder um einiges verbessert.

Grüße

Ralf