RoboTx mit Java Programmieren

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

RoboTx mit Java Programmieren

Beitrag von TOPSL » 19 Feb 2017, 17:42

Hi,
ich habe folgendes Proglem: ich habe versucht meinen RoboTX Controller mit Java zu programmieren, jedoch bin ich immer daran gescheitert, die benötigten DLLs (umFish50.dll, javaFish50.dll) zu laden, da diese als 32-Bit Versionen kompiliert wurden.
Ich habe die jar-Datei (die in das Projekt eingebunden werden muss) so umprogrammiert, dass ich als Fehlermeldung bei den Dlls den PrintStack ausgegeben bekomme und dann kommen folgende Fehlermeldungen: "javaFish50.dll: %1 ist keine zulässige Win32-Anwendung" oder "cant-load-ia-32-bit-dll-on-a-amd-64-bit-platform". Ich habe schon versucht, mein Eclipse Programm als 32-Bit und die JRE-Versionen als 32-Bit zu installieren, doch geholfen hat dabei noch nichts (ich habe auch meine Paths, JAVA_HOME als 32-Bit Version gesetzt und in Eclipse die 32-Bit JDK eingestellt).
Ich wäre sehr dankbar, wenn mir jemand eine Lösung für dieses Problem mitteilen würde (wie z.B. 64-Bit DLLs/die richtige Konfiguration für die 32-Bit DLLs) :)
Tobi

ThomasW
Beiträge: 183
Registriert: 08 Mär 2012, 15:02
Wohnort: St. Gallen

Re: RoboTx mit Java Programmieren

Beitrag von ThomasW » 20 Feb 2017, 09:32

Hallo

Die Fehlermeldung sagt, dass du Java in einer 64-bit Version startest und dort das Laden einer 32-bit dll nicht klappt.

Wir durften geschäftlich schon ähnliche 32-64-bit Probleme lösen. Wir arbeiten mit NetBeans (anstelle von Eclipse), starten NetBeans mit einem 32-bit JDK, starten aus NetBeans raus unser Java-Programm mit einem 32-bit JDK und laden dort dann 32-bit dlls (via JNA). Wichtig dabei: bei den Projekteinstellungen sicherstellen, dass dort auch wirklich ein 32-bit JDK eingetragen ist. Im Zweifelsfall nicht sowas wie "default" nutzen, sondern explizit das JDK angeben, das du nutzen willst. Dann sollte die ganze Sache eigentlich funktionieren.

Gruss
Thomas

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 20 Feb 2017, 12:51

ThomasW hat geschrieben:Hallo

Die Fehlermeldung sagt, dass du Java in einer 64-bit Version startest und dort das Laden einer 32-bit dll nicht klappt.

Wir durften geschäftlich schon ähnliche 32-64-bit Probleme lösen. Wir arbeiten mit NetBeans (anstelle von Eclipse), starten NetBeans mit einem 32-bit JDK, starten aus NetBeans raus unser Java-Programm mit einem 32-bit JDK und laden dort dann 32-bit dlls (via JNA). Wichtig dabei: bei den Projekteinstellungen sicherstellen, dass dort auch wirklich ein 32-bit JDK eingetragen ist. Im Zweifelsfall nicht sowas wie "default" nutzen, sondern explizit das JDK angeben, das du nutzen willst. Dann sollte die ganze Sache eigentlich funktionieren.

Gruss
Thomas
Hallo,

erst einmal vielen Dank für Ihre Antwort. Ich habe mir jetzt NetBeans installiert und als Java-Platform mein 32-Bit JDK ausgewählt(Projekt, Eigenschaften, Bibliotheken, Java-Plattformen), doch wenn ich mein Projekt ausführe kommt immer noch dieselbe Fehlermeldung (%1 ist keine zulässige Win32-Anwendung).
Entschuldigung dass ich nochmal nachfragen musste
LG Tobi

ThomasW
Beiträge: 183
Registriert: 08 Mär 2012, 15:02
Wohnort: St. Gallen

Re: RoboTx mit Java Programmieren

Beitrag von ThomasW » 20 Feb 2017, 13:35

Wie startest du NetBeans?

Ich glaube, wir hatten Probleme, wenn wir NetBeans mit einem 64-bit JDK starteten.

Im netbeans.conf (zu finden in C:\Program Files (x86)\NetBeans 8.0.2\etc\ oder so ähnlich) kannst du das JDK angeben, mit dem NetBeans gestartet wird.

Bitte sicherstellen, dass dort ein 32-bit JDK angegeben ist.

Falls es dann immer noch nicht klappt, bin ich am Ende meiner Weisheit...

Gruss
Thomas

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 20 Feb 2017, 17:11

ThomasW hat geschrieben:Wie startest du NetBeans?

Ich glaube, wir hatten Probleme, wenn wir NetBeans mit einem 64-bit JDK starteten.

Im netbeans.conf (zu finden in C:\Program Files (x86)\NetBeans 8.0.2\etc\ oder so ähnlich) kannst du das JDK angeben, mit dem NetBeans gestartet wird.

Bitte sicherstellen, dass dort ein 32-bit JDK angegeben ist.

Falls es dann immer noch nicht klappt, bin ich am Ende meiner Weisheit...

Gruss
Thomas
Hat leider nicht geklappt :/
Trotzdem vielen Dank für Ihre Hilfe und um nochmal sicher zu gehen: von 64-Bit DLLs haben sie noch nicht gehört oder?
LG

ThomasW
Beiträge: 183
Registriert: 08 Mär 2012, 15:02
Wohnort: St. Gallen

Re: RoboTx mit Java Programmieren

Beitrag von ThomasW » 20 Feb 2017, 22:20

Schade, dass es nicht geklappt hat.

Ich habe bisher noch nie mit umFish50.dll oder javaFish50.dll gearbeitet und weiss auch nicht, ob 64-bit Versionen im Umlauf sind. Wenn ich am Wochenende Zeit finde, werde ich die Sache mal selber ausprobieren und dann hier ein Feedback geben.

Gruss
Thomas

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 21 Feb 2017, 12:51

Wie machen Sie es dann? Denn so wie ich es jetzt verstanden habe, haben sie das schoneinmal gemacht oder irre ich mich da?

LG Tobi

ThomasW
Beiträge: 183
Registriert: 08 Mär 2012, 15:02
Wohnort: St. Gallen

Re: RoboTx mit Java Programmieren

Beitrag von ThomasW » 21 Feb 2017, 13:25

Nein, ich hatte bisher mit umFish, javaFish und dergleichen noch nichts am Hut. Ich habe geschrieben, dass wir "geschäftlich schon ähnliche 32-64-bit Probleme" zu lösen hatten.

Hast du eigentlich hier schon mal reingeschaut: viewtopic.php?f=8&t=3919

Ausserdem ist mir erst jetzt aufgefallen, dass du zwei unterschiedliche Fehlermeldungen erwähnt hast, die wohl kaum beide gleichzeitig aufgetreten sind:
- "cant-load-ia-32-bit-dll-on-a-amd-64-bit-platform": deutet mit ziemlicher Sicherheit auf eine 32-bit dll in einer 64-bit Java Plattform
- "javaFish50.dll: %1 ist keine zulässige Win32-Anwendung": ist dann eher das Gegenteil (64-bit dll, 32-bit Java)

Kontrolliere mal, ob deine dlls überhaupt zusammenpassen. Sie sollten beide (resp. alle) entweder 32-bit oder 64-bit sein, gemischt wird kaum laufen...
Hierfür kann z.B. Dependency Walker (http://www.dependencywalker.com/) helfen.

Wenn du willst, kannst du mir die dlls auch per Mail zusenden und ich schaue kurz rein.

Gruss
Thomas

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 21 Feb 2017, 15:32

Hab ich schon getestet, sind beide 32-Bit. Ich habe ziemlich lange an der Konstellation von Eclipse version, DLLs in System32/SYSWOW64 Ordner, JDK Version etc... und da erschienen manchmal die eine und manchmal die andere Version. Ich glaube dass die Fehlermeldung: javaFish50.dll: %1 ist keine zulässige Win32-Anwendung erschien, wenn ich "alles" (bin mir da eben nicht so sicher ob das richtig gemacht habe) auf 32-Bit eingestellt war (außer eben mein Betriebsystem, aber das sollte ja kein Problem darstellen).
LG Tobi

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 22 Feb 2017, 15:19

Danke übrigens für den Tipp mit dem Forumlink, ich habe mich jetzt mit einem anderen in Kontakt gesetzt, der gesagt hat, dass die DLLs wegen einer anderen DLL nicht mit dem neuen Betriebsystem kompatibel sind. Vielen Dank für Ihre Antworten :)
LG Tobi

TOPSL
Beiträge: 9
Registriert: 19 Feb 2017, 17:30

Re: RoboTx mit Java Programmieren

Beitrag von TOPSL » 24 Feb 2017, 11:03

Er hat mir jetzt übgrigens einen Link mit den ganzen DLLs geschickt, mit denen das ganze funktioniert. Der Fehler lag dann wahrscheinlich doch nicht in der Bit-Version.

Antworten