Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Thomator am 11.12.09 - 10:54:17
Titel: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 10:54:17
Hi, Das find ich wieder mal super-gut: Ich will grad in einen Java-Agenten eine forall-Schleife einbauen, da kommt die Fehlermeldung: 'for-each-statements are only available if source lvl is 1.5 '. Ich denk mir OK, Compilance-Level ändern. Guck rein -> Im Projekt und für den Designer steht alles auf 1.5. Hallo? Da tickt jetzt dort die JVM in einer 6'er Version, einem wird vorgegaukelt, der Compilance-Level wäre 1.5, ist aber in wirklichkeit 1.4. Noch nicht mal die Debug-Infos werden eincompiliert, so dass in den Fehlermeldungen (StackTrace) die Zeilennummern fehlen. Auch da steht in den Einstellungen, es wäre eingeschaltet. Das ist so enttäuschend...
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Felix Ziegler am 11.12.09 - 11:03:50
Kann ich nicht nachvollziehen. Folgender Beispielcode wird einwandfrei compiliert.
Code
List<String> names = new ArrayList<String>();
names.add("a");
names.add("b");
names.add("c");
for (String name: names)
System.out.println(name.charAt(0));
Hast du das Java Compiler Target in der notes.ini gesetzt?
Gruß, Felix
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 11:12:20
Na ja, wir haben hier einen Eclipse-Client, die Möglichkeit, in den Project-Settings sämtliche Compilance-Einstellungen vorzunehmen aber um etwas ändern zu können muss ich einen Notes.ini-Eintrag setzen? Ich will ja gar keine andere JVM nutzen, als die von Notes. Und das ist bei 8.5.1 Version 6. Und dann soll ich, um einen Level > 1.4 einzustellen mit ini-Parametern rumfummeln? Sry, aber so was ist für mich echt nicht nachvollziehbar.
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 11:14:09
Und übrigens: The JavaCompilerTarget INI setting lets you use features specific to different Java Development Kits (JDKs). So sind die Parameter dokumentiert. Also muss ich auf eine andere JVM umschalten, damit ich Einstellungen verändern kann. Supi...
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: atbits am 11.12.09 - 11:14:34
Also bei mir ging das alles auch ohne notes.ini.
Was steht denn in der Datei .project im Workspace?
Grüße David
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: flaite am 11.12.09 - 11:42:11
Notes 8.5 benutzt standardmässig eine Java5 VM. Also muss jemand VORHER an der notes.ini herumgefummelt haben, damit sie eine andere Version benutzt.
Wenn ich Java für Notes entwickle, benutze ich immer die JVM von Notes in Eclipse. Kannst du in Window/Preferences/Java/Installed JREs einstellen. Und dann rechte Maustaste auf Eclipse Projekt / Properties (ganz unten) In dem Dialog dann Java Build Path, Reiter Libraries / JRE System Library -> Hier auf die Notes VM wechseln, die du unter Windows Preferences eingestellt hast. Kann man für jedes Projekt jederzeit ändern.
Für Compliance Levels gibts in Eclipse noch die Einstellung dem Dialog unter Eclipse Project/Properties: Java Compiler.
Die Fehlermeldung "for-each-statements are only available if source lvl is 1.5 '." weist darauf hin, dass dein 8.5er Notes eine 1.4er VM verwendet. Vermutlich hat jemand in den inis-rumgefuhrwerkt, oder das Notes ist kein 8.5.
Mir könnte es passieren, dass ich mit einem 8.5er Client Code entwickle, versuche den auf einem 8er oder 7er Server laufen zu lassen und dabei vergesse, dass der Server eine andere JVM benutzt.
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 12:01:42
Der Client ist eine Standard-Installation Notes 8.5.1 (englisch). In dieser Installation ist die von IBM mitgelieferte JVM-Version 6. Hier ein Auszug aus dem File 'notices.txt' im jvm-Ordner von Notes: NOTICES AND INFORMATION
IBM(R) 32-bit SDK for Windows(R), Java(TM) Technology Edition, Version 6 IBM(R) 32-bit Runtime Environment for Windows(R), Java(TM) Technology Edition, Version 6
An der Notes.ini ist bisher nichts geändert worden. Wir sind in der komfortablen Situation, dass solche Sachen nicht zentral ausgerollt werden und ich damit absolute Kontrolle habe. Und weder die Einstellungen in den globalen Settings, noch in den Projektsettings haben irgendeine Auswirkung.
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 12:09:08
Und noch besser: Jetzt habe ich den Notes.ini-Eintrag gesetzt. Beim Speichern der Java-Klasse wird mir folgende Warnung angezeigt:
Na ja, dann ist eben 1.5 nicht kompatibel mit 1.5. Zumindest kann ich jetzt die Einstellungen ändern und die Debug-Infos werden mit eincompiliert. Ist ja schon mal was.
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 11.12.09 - 12:13:32
@Pitiyankee Da in 8.5.1 für die Java-Entwicklung endlich der echte Java-Editor von Eclipse verwendet wird, ist das entwickeln jetzt auch im Designer-Client gut möglich (mit der einen oder anderen Macke, wie man sieht). Aber grundsätzlich ein Riesen-Fortschritt!!
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Ralf_M_Petter am 05.03.10 - 12:11:03
@thomator
Kannst du mir sagen, wie du die Meldung beim Speichern des Agents zusammgebracht hast. Bei mir kommt nämlich diese Meldung nicht und der Agent bleibt in der alten Version? siehe auch Thread http://atnotes.de/index.php/topic,47780.0.html
Grüße
Ralf
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 24.03.10 - 14:30:15
Hi Ralf, ich kann die Meldung leider selber nicht mehr reproduzieren.
LG
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Ralf_M_Petter am 24.03.10 - 15:10:18
Ähem ich kann die Meldung mittlerweile reproduzieren und weiß jetzt auch wie es funktioniert. Da es aber ziemlich verwirrend funktioniert und sich wie man sieht nur die wenigsten auskennen habe ich bei der IBM einen PMR dazu laufen.
Für alle die das Problem noch haben. Man braucht, bzw. soll die Notes.ini Variable nicht setzen. Wenn man dann in einem Agent erweiterte Syntax von Java 1.5 verwendet, dann braucht man bei dem Fehler einfach nur den 2. Quickfix bei der Fehlermeldung zu der erweiterten Syntax wählen. Auf keinen Fall den ersten den der funktioniert nicht. Dann kommt beim Speichern des Agenten die Meldung von Thomator und in Zukunft kann bei diesem Agenten immer die neues Syntax verwendet werden.
Grüße
Ralf
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Thomator am 07.04.10 - 14:59:41
Sehr schön ;-) Da fällt mir so spontan ein Kommentar aus einer Lotus-Script-Lib in der Ressourcenplanung 8.5.1 ein (Standard-IBM):
'its probaly a hack, but it works
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: m3 am 07.04.10 - 15:06:37
Ralf, wie ist das dann beim Ausrollen der Anwendung. Da muss dann aber schon die Notes.ini gesetzt sein, oder?
Titel: Re: Hab ich einen Hals... (Notes 8.5.1 und Java-Compilance Level)
Beitrag von: Ralf_M_Petter am 07.04.10 - 16:39:29
Nein würde ich nicht so sehen, da Notes den Wert im Agent speichert. Und der Wert ja auch nur für die Kompilation benötigt wird. Ich habe es gerade mit einem Testagent ausprobiert. 1.5 Code läuft einwandfrei auf einem anderen Notesclient, der keine Notes.ini Variable gesetzt hat. Ob es auf einem Server läuft kann ich jetzt nicht gleich probieren, aber ich bin zuversichtlich.