Wird in Windows kompiliertes Java unter Linux funktionieren?

8

Mein Java-Programm funktioniert, wenn ich es unter Windows verwende (Eclipse und Bluej). Ich komprimiere es zu einem Glas und schicke es an meinen roten Hut und bange. nichts funktioniert. Es bricht an den seltsamsten Dingen, wie Textfeldsatz Text wird nicht angezeigt, JPasswordfield gerade verschwunden, Java AWT ROBOT stirbt auch ... die Liste geht weiter, zuerst dachte ich, es muss meine Linux JRE ist veraltet, aber ich installierte letzte JRE dann das JDK ohne Verbesserung überhaupt. Ich habe das Gefühl, dass ich die Java Cross Plat Fähigkeit vermisse. Ich habe auch versucht, alle meine Funktionen und Eingeweide zu entfernen, um zu sehen, was bricht, aber es scheint, dass jedes zweite Ding bricht, abgesehen von einigen der wichtigsten GUI-Komponenten und den meisten Backend-Sachen. im Grunde wird jedes Ding, das etwas Phantasie verwendet, in meinem Gesicht explodieren, wie zum Beispiel ein Textfeld in ein Passwortfeld zu machen ...

Dies ist mein erstes Mal Posting;) Bitte sei nett zu dem Neuling!

Danke !!!

Gelöst !!! Yay. Problem gelöst!!! Es war, weil mein Java-Pfad nicht gesetzt ist, so dass mein GCC / GCJ anstelle meines oracle-java sprang, selbst wenn ich java-jar xxx.jar verwendete. also habe ich den java-verzeichnispfad von meinem java-jar xxx.jar eingefügt und habe wie ein charm gearbeitet. Wenn Sie den Pfad nicht festgelegt haben, müssen Sie dies manuell tun

/usr/java/jdk1.6.0_21/jre/bin/java -jar xxxxx.jar

java -version um zu überprüfen, ob dein echtes Java läuft oder ob es noch GCJ ist

    
JavaLu 08.10.2010, 16:00
quelle

10 Antworten

11

Linux-Benutzer führen oft Java-Programme mit gcj statt Java aus. Überprüfen Sie, ob Sie eine korrekte ausführbare Datei verwenden.

    
Ha. 08.10.2010, 16:21
quelle
5

Stellen Sie sicher, dass Sie Sun (Oracles) JRE auf Ihrem Linux-Rechner verwenden und nicht irgendeine Java-Implementierung von Drittanbietern wie gcj oder Ähnliches.

Nach meiner Erfahrung sind Java-Anwendungen ziemlich portabel, solange Sie sich bei jedem Ziel-SO an den gleichen JVM / Runtime-Anbieter halten, aber Java-Implementierungen von verschiedenen Anbietern können sich voneinander unterscheiden.

    
Grodriguez 08.10.2010 17:13
quelle
4

Ja. Die Klassen- und JAR-Formate sind absichtlich plattformübergreifend.

Sind Sie absolut sicher, dass Ihre JAR-Datei korrekt auf Ihren Linux-Rechner kopiert wurde? Wenn Sie ftp verwendet haben, ist es wichtig, binäre anstelle von ascii Transfer zu verwenden.

    
quelle
3

Ist Ihre Anwendung von externen Bibliotheken abhängig, die Sie auch auf Ihrem Linux-Rechner benötigen?

    
Dave 08.10.2010 16:06
quelle
2

Java sagt: " Schreiben Sie einmal, laufen Sie irgendwo ".

    
卢声远 Shengyuan Lu 08.10.2010 16:08
quelle
1

Verwenden Sie KDE? Welches Thema? Ich hatte gestern ein Problem, dass das Thema "Cleanlooks" viele Bugs hat, die Widgets darstellen. Versuchen Sie "Sauerstoff".

Wenn Sie können, versuchen Sie den Code auf einer anderen Linux-Box (vielleicht hat es einen Hardwaredefekt). Führen Sie "memtest" aus (sollte eine Option im Bootloader oder auf Ihrer Rettungs-CD sein).

    
Aaron Digulla 08.10.2010 16:07
quelle
1

Swing sollte vollständig tragbar sein. Versuchen Sie, das Metall-Look-and-Feel zu verwenden, das weitgehend unterstützt wird. Ich habe jedoch Zweifel an java.awt.Robot und wäre nicht überrascht, wenn dies die Ursache Ihrer Probleme wäre.

    
Qwerky 08.10.2010 16:17
quelle
1

Ich habe eine Swing-App, die ich über Java Web Start verteilt habe und die ich seit 2004 nicht mehr aktualisiert habe und von der ich weiß, dass sie unter Mac OS X, Windows und Linux funktioniert. Ich habe es gerade neulich ausgeführt, weil mir jemand eine Frage dazu gestellt hat. Es wurde ursprünglich unter Windows geschrieben, hat aber auf anderen Betriebssystemen oder sogar in wesentlich späteren Versionen von Java nie Probleme gezeigt.

Die JVM bietet ein sehr gleiches Spielfeld auf einer Vielzahl von Plattformen und die Java-API ist gut implementiert, um das gleiche zu funktionieren und die gleiche Funktionalität zu bieten. Meine Wette ist, dass Sie feststellen werden, dass dieses Problem mit Ihrem Java-Code nichts zu tun hat. Zusätzlich zu dem Vorschlag, Ihre App auf einem anderen Computer mit demselben Betriebssystem zu testen, sollten Sie versuchen, die Java-Anwendungen anderer Personen auf demjenigen auszuführen, der Probleme verursacht. Probieren Sie mein eigenes HotSheet: Ссылка oder ein Spiel wie Legerdemain: Ссылка , um zu sehen, ob diese funktionieren.

    
John Munsch 08.10.2010 16:33
quelle
1

Unter Linux ist es möglicherweise entscheidend, das Sun JDK / JRE und nicht das openjdk zu verwenden, das eine Implementierung des offiziellen sun java jdk ist. Es könnte also sein, obwohl es nicht sicher ist.

    
toomuchcs 08.10.2010 20:54
quelle
0

Java ist sehr transportabel. Wahrscheinlich ist Ihre VM anders. Obwohl die Open-Source-VMs sehr gut werden, empfehle ich es mit der Sun-VM zu versuchen - ich hatte noch nie ein Problem mit der Ausführung von Code.

Wenn Sie Bibliotheken mit Maschinensprachekomponenten verwenden, müssen diese auch anders sein (das habe ich bei einigen Grafikbibliotheken bemerkt, die auf das 3D-Subsystem der Plattform zugreifen)

Aber Java selbst wird problemlos auf jedes System portieren, das die gleichen Bibliotheken und eine gute VM hat. Sehr gut - ich mache es die ganze Zeit und mache das seit zehn Jahren und habe buchstäblich nie ein Problem gehabt. Dies läuft auf Client / Server-Systemen, auf denen die Clients und Server auf verschiedenen Plattformen, PC / Mac & amp; Unix und sogar eingebettete Systeme - einfach nur Ports.

Nun, Applets, die in verschiedenen Browsern laufen, oder visuell versuchen, Zeichensätze auf Maschinen zu finden, die nicht die gleiche Schriftart enthalten - Nichts wird Ihnen dabei helfen.

    
Bill K 08.10.2010 17:20
quelle

Tags und Links