Liebe Gruppe 2,
so, jetzt konnte ich Ihr Problem nachvollziehen, das wahrscheinlich für alle interessant sein mag. Das Problem bei Ihnen liegt darin, dass Sie OpenOffice im "JavaFX Application Thread", also im JavaFX GUI-Thread laden, was nicht möglich ist. Der Grund ist, dass OO selbst eigene GUI-Verwaltungen anstößt, die sich aber mit dem JavaFX GUI-Thread nicht vertragen und zum "Aufhängen" (Deadlock) führen!
Die Lösung dafür ist, dass Sie in Ihrem Programm die Ansteuerung
von OO in einem eigenen Thread vornehmen müssen, der sich vom
JavaFX GUI-Thread unterscheidet. Dies ist relativ einfach dann
möglich, wenn Sie in einer ooRexx-Klasse in einer Methode die
reply-Anweisung ausführen, die dazu führt, dass die Kontrolle aus
der Methode dem Aufrufer zurückgegeben wird und in einem eigenen
(Rexx-) Thread der restliche Code in der Methode parallel
ausgeführt wird. Die beigefügte Lösung macht das (lesen Sie die
Anmerkungen weiter unten sorgfältig durch).
---
Anbei eine Version, die funktioniert, die Sie aber noch für Ihre
Zwecke fertigstellen müssen!
Dazu einige Anmerkungen:
So, wer auch immer hierzu Fragen hat, kann sie gerne stellen!
Mit freundlichem Gruß
Rony G. Flatscher
Liebe Gruppe 2,
On 30.01.2020 00:26, Dabernig Thomas wrote:
Der Output des Debug Programs liefert dieses Ergebnis. Die Installation von OpenJDK8 liefert einen rexx lang error.OpenJDK8 (zumindest von AdoptOpenJDK) beinhaltet JavaFX nicht! Bei der Bell-OpenJDK-Distribution weiß ich es nicht, vermute es aber, da zu dem Zeitpunkt Oracle JavaFX noch nicht zur Gänze ins Opensource übertragen hatte. Probieren Sie stattdessen OpenJDK 10 oder 9, da diese zwei Distributionen JavaFX beinhalten sollten.
Sie können jederzeit von den neuesten Versionen von OpenJDK und JavaFX selbst eine JRE bauen, die alles beinhaltet, vgl. Addendum auf <https://www.rexxla.org/events/2019/schedule.html>, klicken Sie auf die Präsentation von "The 2019 Edition of BSF4ooRexx".
---
Ad Ausgabe des Programms: diese zeigt, dass Sie BSF4ooRexx mindestens zwei Mal installiert haben.
- Deinstallieren Sie am besten BSF4ooRexx zur Gänze!
- Anschließend stellen Sie bitte sicher, dass die CLASSPATH-Umgebungsvariable keine Verweise auf BSF4ooRexx mehr hat, gegebenenfalls löschen Sie die entsprechenden Einträge im System.
- Installieren Sie BSF4ooRexx wieder.
Mit freundlichem Gruß
Rony G. Flatscher
Von: Aj2019w <aj2019w-bounces@alice.wu-wien.ac.at> im Auftrag von Rony G. Flatscher <Rony.Flatscher@wu.ac.at>
Gesendet: Mittwoch, 29. Januar 2020 18:55
An: aj2019w@alice.wu-wien.ac.at <aj2019w@alice.wu-wien.ac.at>
Betreff: Re: [Aj2019w] G02 FehlermeldungLiebe Gruppe 2,
On 29.01.2020 18:36, Dabernig Thomas wrote:
Wir bekommen beim Verbindungsaufbau zur MySql 8.0.19 Datenbank, diese Fehlermeldung. Verwendet wird der JDBC Connector 8.0.19. Er ist als Umgebungsvariable verlinkt. Der Code Snippet befindet sich im Controller File.
/* connect to database*/
url = "jdbc:mysql://localhost:3306/test"
user = "newuser"
pw = "wubp2"
mydriver=.bsf~new('com.mysql.jc.jdbc.Driver')
Die Fehlermeldung weist darauf hin, dass die obige Klasse nicht gefunden werden kann. Entweder ist der Name der Klasse falsch geschrieben oder das jar-Archiv, in dem sich diese Klasse befindet, kann nicht gefunden werden.
Für letzteres ist es notwendig, dass Sie die exakte Definition von CLASSPATH angeben und sicherstellen, dass alle angegebenen Pfade darin tatsächlich zu existierenden jar-, zip-Dateien oder zu Verzeichnissen, in denen bzw. in deren Unterverzeichnissen die gesuchten Java-Klassen zu finden sind!
Damit Sie es etwas zum Debuggen haben, hier ein gerade geschriebenes, kurzes Rexx-Programm "listPaths.rex" dafür (für alle wahrscheinlich interessant):
-- rgf, 2020-01-29: alle für Java relevante Pfade in lesbarer Form auflisten -- name: "listPaths.rex" do envVariable over "java.class.path", "java.library.path" call showPath envVariable end ::requires "BSF.CLS" ::routine showPath parse arg pathProperty say pp(pathProperty)":" tab="09"x -- Tabulator-Zeichen value=.java.lang.System~getProperty(pathProperty) pathSep=.java.lang.System~getProperty("path.separator") do while value<>"" parse var value path (pathSep) value say tab "exists?" SysFileExists(path) pp(path) end sayIch gehe davon aus, dass Sie sich alle BSF4ooRexx-Samples angesehen haben (das ist ja einfach, weil man nur die "index.html"-Dateien laden und lesen muss, um einen Überblick zu gewinnen) und daher das mitgelieferte JDBC-Beispiel in "samples\ReneJansen\jdbc.jrexx" kennen.
Mit freundlichem Gruß
Rony G. Flatscher
-- -- __________________________________________________________________________________ Prof. Dr. Rony G. Flatscher Department Informationsverarbeitung und Prozessmanagement Institut für Wirtschaftsinformatik und Gesellschaft D2c 2.086 WU Wien Welthandelsplatz 1 A-1020 Wien/Vienna, Austria/Europe http://www.wu.ac.at __________________________________________________________________________________