Seite 1 von 1

Java Funktuion aus Xbase aufrufen

Verfasst: Mi, 07. Okt 2009 15:15
von ichbindabei
Hallo zusammen
Ich habe ein altes Xbase Programm.
Aus diesem möchte ich nun eine Funktion aufrufen, die in Java geschrieben ist.

Hat irgendwer sowas schonmal gemacht oder weiß wie es geht?

Danke schonmal im vorraus.
Gruß
Ichbindabei

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Mi, 07. Okt 2009 17:56
von brandelh
Hi,

da bleibt die Frage offen, ob diese JAVA Funktion nach Xbase++ umgesetzt werden kann
oder ob man aus Xbase++ heraus auf die Java-Runtime soll ?

Der erste Fall ist recht einfach, solange man den Quellcode hat, java versteht und keine exotischen Sachen benötigt werden ...

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 9:41
von ichbindabei
Nein so einfach ist das leider nicht.
Ich brauche den 2. Teil.
Ich habe ein in Java geschriebenes Programm und möchte dieses aus Xbase aufrufen.
Dabei muss aber sichergestellt sein das es im Xbase erst dann weiter geht, wenn man aus dem java wieder zurück springt.
Schön wäre es wenn ich das Java Programm wie eine Funktion in einer DLL aufrufen könnte.

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 10:05
von brandelh
ichbindabei hat geschrieben:Schön wäre es wenn ich das Java Programm wie eine Funktion in einer DLL aufrufen könnte.
ob das geht weiß ich nicht, aber ich könnte mir vorstellen, dass man mit RunShell() arbeiten könnte.
Wenn der Parameter lAsync := .f. ist, wartet das Xbase++ Programm auf das Ende des aufgerufenen Programmes.
Bei Phil gibt es eine Abwandlung, die sogar Ergebnisse direkt in Variablen übergibt.
Wenn dur nur den Rückgabewert brauchst und die Parameter in der Befehlszeile übergeben kannst, geht das gut.
Ansonsten musst du über Zwischenspeicher nachdenken.

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 10:55
von Alfred
Was kann denn ein Java-Programm was Xbase nicht kann?

Gruß
Alfred

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 13:01
von Lewi
Ich habe Anwendungen unter .NET realisiert, die wiederum Fremdanwendungen über ActiveX bzw. DCOM aufrufen und steuern um z.B. Daten von Fremdanwendungen in ein xBase zu importieren.
Die .NET-Anwendungen wiederum speichern die Daten aus Fremdanwendungen in Dateien, die benutzerabhängig in entprechende Pfade abgelegt werden. Die xBase-Anwendung wiederum liest diese Dateien ein und wertet sie aus. Der Aufruf der .NET-Anwenunge erfolgt über runshell() im synchronen Modus. Daten von xBase an .NET-Anwendungen werden über Ini-Files übergeben, die dann eingelesen werden.

Im Prinzip sollten diese Verfahren auch für JAVA-Anwendungen angewandt werden können. Bis auf den Umstand, dass manche externe Anwendungen, die ein DCOM-Service bereit stellen, nach Beendigung der Transaktion nicht ordnungsgemäß aus dem Speicher entfernt werden und es bei einem erneuten Aufruf zu Problemen kommen kann", funktioniert das angesprochene Verfahren im Praxiseinsatz stabil. Das Problem mit der Speicherentfernung habe ich insofern lösen können, dass mittels API-Funktionen die ensprechenden Task beenden werden bevor die Fremdanwendung erneut über .NET aufgerufen wird.

Gruß, Olaf

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 13:17
von ichbindabei
Die lösung mit RunShell() scheint zu klappen
allerdings schaffe ich es nicht die .jar datei direkt zu starten sondern starte sie über eine cmd.
aber zumindes wartet Xbase so bis java wieder beendet wird.
java muss es deswegen sein weil meine kollegen zum teil nur java können.
Danke für die hilfreichen antworten.
wenn noch jemand weiß wie ich direkt die .jar datei starten kann wär das noch hilfreich ansonnsten bleibt die cmd halt dazwischen.

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 15:14
von Wolfgang Ciriack
Also ich hab hier so eine Batchdatei, in der wird die jar-Datei einfach aufgerufen mit:
java -xxx.jar - und ein Haufen Parameter dahinter.

Das sollte dann mit Runshell etwa so funktionieren:

para:="meinjavaprog.jar"
prog:="C.\windows\system32\java.exe"

Runshell(para, prog,.F.)

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 15:32
von ichbindabei
ne geht leider nicht
passiert irgendwie garnichts wenn ich das versuche

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 15:48
von Tom
Wenn Du als vierten Parameter (lBackGround) bei RunShell() .T. angibst, sieht man die CMD-Box immerhin nicht mehr.

Eigentlich müsste das auch über/mit RunDll gemacht werden können, wenn der Java-Interpreter als Standardprogramm festgelegt ist.

Re: Java Funktuion aus Xbase aufrufen

Verfasst: Do, 08. Okt 2009 16:02
von ichbindabei
ja ich denke das ich es auch mit der batch machen werde
danke an alle