Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: HH am 13.04.07 - 12:12:48
-
Hallo zusammen,
ich möchte in einer Anwendung eine Script-Bibliothek (Name=EventsBackend) mit einer Klasse für Backend-Funktionen und eine weitere Script-Bibliothek (Name=EventsFrontend) mit einer Klasse für Frontend-Funktionen erstellen.
Die Frontend-Bibliothek soll Klassen aus der Backend-Bibliothek verwenden bzw. daraus abgeleitete Klassen enthalten. Dazu habe ich diese mit Use "EventsBackend" in den Options der Bibliothek EventsFrontend eingebunden.
Wenn ich nun versuche die Frontend-Bibliothek mit Use "EventsFrontend" in den Options einer Maske einzubinden, so erhalte ich die Fehlermeldung Illegal circular Use: EventsFrontend.
Das ganze hab ich nun soweit reduziert, dass die beiden Bibliotheken nun bis auf Option declare und der Use Anweisung in der Frontend-Bibliothek keinen weitern Code enthalten.
Auch die Maske enthält nur die Use Anweisung zum einbinden von EventsFrontend.
Cache.dsk hab ich ohne weiteren Erfolg gelöscht. Notes 6.5.5. Irgend welche Ideen???
Hubert
-
In solchen Fällen hat es mir schon oft geholfen, LS neu zu kompilieren (über "Werkzeuge" )
-
Das hatte ich auch schon versucht, leider ohne Erfolg.
Hubert
-
Fixup und compact auf die Datenbank.
Axel
-
manchmal hilft/funktioniert das Neukompilieren über Werkzeuge nicht,
dann hilft nur alle Elemente die die Klasse nutzen einzeln "neu zu kompilieren",
d.h. öffnen "ändern" (= "Blank" einfügen) und wieder speichern,
danach waren bei uns (Notes 6.5.x) diese Fehler wieder weg.
-
Sowohl fixup / compact als auch das erneute Speichern nach Änderung bringt nichts.
Hubert
-
Und auch Notes komplett neu gestartet danach?
-
Natürlich auch das.
Hubert
-
Schmeiss mal die Blibotheken und die ganzen Use-Statements raus, lass mal Script neu kompilieren und mach dann noch einen compact hinterher.
Anschließend erstellst du die Bibliotheken neu.
Axel
-
Soweit erst einmal Dank für euere Antworten. Bin jetzt bereits at home 8) und kann hier nur mit 7.0.2 testen. Bis spätestens Montag.
Hubert
-
Nach Deiner Beschreibung sieht ja alles korrekt aus, was Du gemacht hast, Hubert. Kann es aber sein, dass Du im Vorfeld mal ein "Circular use" verursacht hast? Das ist ggf. mit seinen "Ruinen" verdammt hartnäckig (und verbirgt sich dann nicht im Quellcode, sondern im tokenisierten Teil - m.E. ein Bug).
Passiert ist mir sowas auch schon. Helfen könnte (!) tatsächlich ein Löschen der Caches (neben der CACHE.NDK gehört hierzu auch die DESKTOP.DSK). Aber das hast Du ja schon durch. Ein Fixup oder Compact kann aber nichts bringen - das ist eine ganz andere "Spielwiese".
Tipp in solchen Fällen: Die Libs in .LSS-Files exportieren und anschliessend löschen. Dann in der richtigen Reihenfolge wieder importieren und neue Libs und die Bezüge jedes Mal (nach Import) neu kompilieren. Anschliessend das ganze Projekt rekompilieren (oft gar nicht mehr notwendig, aber es schafft zusätzliche Sicherheit).
Sollte der Fehler dann immer noch auftauchen, dann muss wirklich ein "circular use" vorhanden sein.
Bernhard
-
Jemand sollte das mal bei Lotus auflösen.
Habs bei Bob Balaban angemeldet. Nummer 91 oder so:
http://www.bobzblog.com/tuxedoguy.nsf/dx/why-this-blog?opendocument&comments
In bestimmten anderen Programmiersprachen hat man mit so einem Nonsens nämlich keine Probleme, weil ein smarter Compiler solche zirkulären Referenzen auflöst.
Ich hab auch schon einmal das in LotusScript gesehen:
Es gab definitiv zirkuläre Referenzen in den ScriptLibraries. Die Libs luden sich aber nur ein paar Runden gegenseitig in den Speicher, ohne dass es dafür eine Erklärung gab, warum dieses Spielchen stoppte. Es lief halt nur sehr langsam an, wegen den paar Runden zirkulären Ladens.
-
... die Fehlermeldung kommt aber auch, wenn man die Lib beim Use falsch schreibt - es also die Lib nicht gibt...
Toni
-
Toni, Du könntest zum Held des Threads avancieren - an diese simple (und eigentlich allgemeine bekannte) Dumm-Fehlermeldung des Designers) hat bisher keiner gedacht!
Soweit ich mich erinnere, hat der R4-Designer noch geschimpft, dass er nicht weiss, was ich mit der "GibtEsNicht.Lib" meine. Seit R5 dann offensichtlich ein degression bug, über den die IBM-eignen LS-Entwickler doch eigentlich auch schon einmal gestolpert sein sollten. Vollkommen unverständlich.
Bernhard
-
Guten Morgen!
Also, ich hab das alles noch einmal neu aufgesetzt und siehe da, es lief. Ein Schreibfehler war auszuschließen, so dass ich eher zu Bernhards Ursachen- / Lösungsansatz tendiere.
Herzlichen Dank für euere Antworten.
Hubert