SWT - Wie Windows erstelltes .jar auf einem MAC ausführen?

Status
Nicht offen für weitere Antworten.

Tinobee

Mitglied
hallo,

ich muss eine auf einem windows pc erstellte arbeit in ein .jar file kompilieren und der empfänger benutzt einen mac. ich habe mal gelesen, dass es da zu problemen kommen kann beim ausführen. jedoch weiß ich nicht, wie ich das verhindern könnte. kann man das irgendwie abfangen? wenn ja, wie?

tinobee
 

Wildcard

Top Contributor
jars funktionieren, lediglich die nativen Bibliotheken (in deinem Fall SWT) musst du pro Plattform austauschen.
 

Tinobee

Mitglied
hallo,

ich bin grad echt verzweifelt. ich kriegs net hin. ich muss meine anwendung mit ant kompilieren laut vorgabe und ich weiß nicht, was ich für dateien / ordner wohin kopieren muss, damit alles dabei ist. ich habe im buildpath meines projektordner unter SWT insgesamt 4 .jar archive stehen
org.eclipse.swt
org.eclipse.jface
org.eclipse.core.commands
org.eclipse.equinox.common
wenn ich diese jetzt in den lib ordner meines projektes lege, reicht das? und wie genau muss ich das austauschen, was du meintest? ich hab mir den ordner swt-3.3.1.1-carbon-macosx runtergeladen da ist nur ne swt.jar und ne swtdebug.jar enthalten. was muss ich jetzt genau holen und in welcher form wohin legen?

bitte entschuldigt, falls euch das zu einfach vor kommt, aber ich hab noch nie eine anwendung in ein jar exportiert und erst garnicht mit externen bibliotheken und ich will nicht, dass das ding bei meinem prof net läuft und ich durchfalle. bin echt sehr in panik, weil in 2,5 stunden abgabe ist und noch lange kein ende in sicht ist - vieles läuft schief......

muss ich in der musterdatei noch was ändern? dazu steht in der anleitung nix. da steht nur ich soll das in eine build.xml schreiben und dann ein kommando aufrufen. muss ich da was austauschen?
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project name="MeinProjekt" default="dist">
  <property name="MyApp" value="MeineAnwendung" />
  <path id="compile.classpath">
    <fileset dir="lib" />
    <pathelement path="bin" />
  </path>
  <target name="compile">
    <javac srcdir="src" destdir="bin">
      <classpath refid="compile.classpath" />
    </javac>
  </target>
  
  <target name="dist" depends="compile">
    <delete file="${MyApp}.jar"/>
    <delete file="dist/${MyApp}.zip"/>
    <mkdir dir="dist" />
    <jar jarfile="${MyApp}.jar"
         basedir="bin"
         manifest="manifest.txt" />
    <zip destfile="dist/${MyApp}.zip">
      <fileset dir="." includes="lib/*" />
      <fileset dir="." includes="${MyApp}.jar" />
    </zip>
  </target>
</project>

aktuell funktioniert das nicht. ich hab in zeile 1 unter "MeinProjekt" den namen des projektordners eingegeben und in zeile 2 unter "MeineAnwendung" den gewünschten programmnamen. und ich bekomme für den befehl ant -f build-jar.xml die fehlermeldung
build-jar.xml does not exist
build failed!
rufe ich nur ant -f build.xml wird zwar compiliert, aber die anwendung startet mit einem "Could not find the main class" error und stürzt ab.


gruß, tino
 

Tinobee

Mitglied
also wenn ich mich beeile, schaff ichs vielleicht noch. erste versuche, zu kompilieren, glückten zwar, aber ich bekomme probleme beim starten der anwendung. das des integrierten logwriters weiß ich ,dass es daran liegt
org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: file:\E:\Studium\EclipseWorkspace\ProjectControl\MeineAnwendung.jar!\de\prog3SemesterAufgabe\tb\icons\pageWhite.png (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch))
at org.eclipse.swt.SWT.error(SWT.java:3563)
at org.eclipse.swt.SWT.error(SWT.java:3481)
at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:156)
at org.eclipse.swt.graphics.ImageDataLoader.load(ImageDataLoader.java:26)
at org.eclipse.swt.graphics.ImageData.<init>(ImageData.java:374)
at org.eclipse.swt.graphics.Image.<init>(Image.java:729)
at de.prog3SemesterAufgabe.tb.GUI$ShellMenu.<init>(GUI.java:478)
at de.prog3SemesterAufgabe.tb.GUI.createContents(GUI.java:112)
at de.prog3SemesterAufgabe.tb.GUI.open(GUI.java:83)
at de.prog3SemesterAufgabe.tb.GUI.main(GUI.java:58)
Caused by: java.io.FileNotFoundException: file:\E:\Studium\EclipseWorkspace\ProjectControl\MeineAnwendung.jar!\de\prog3SemesterAufgabe\tb\icons\pageWhite.png (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at org.eclipse.swt.internal.Compatibility.newFileInputStream(Compatibility.java:157)
at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:153)
... 7 more
jedoch verstehe ich den grund nicht

die icons sind alle da und in eclipse läuft es doch primstens. was mache ich da falsch?
 

Wildcard

Top Contributor
Die Bilder liegen im jar. Du scheinst aber zu versuchen mit der File API darauf zuzugreifen. Das kann nicht funktionieren, da es keine Dateien, sondern Entries in einer jar sind.
getClass().getResourceAsStream
 

Wildcard

Top Contributor
Was genau hast du an der Antwort nicht verstanden? new File(...) funktioniert nicht mit Resourcen die im jar liegen.
 

Tinobee

Mitglied
Wildcard hat gesagt.:
Was genau hast du an der Antwort nicht verstanden?
ich hab nicht verstanden, was ich ändern muss. ich bin mit dieser sachen noch total unerfahren. ich bin allgemein noch total unerfahren. ich verstehe die zusammenhänge nicht und weiß nicht, ob ich jetzt was in meiner build.xml ändern muss oder meiner mainfest.txt . das ist das problem. ich bin wirklich gewillt, das zu lernen und zu verstehen. im augenblick (T-60 min) hilft mir nur noch ne klare ansage, was ich wo ändern muss. damit es endlich läuft...

ich bin genau nach dieser anleitung vorgegangen
 

Tinobee

Mitglied
ich hab die pfade alle extra realtiv gestaltet um das zu verhindern
Code:
newProjectMenuItem.setImage(new Image( display, getClass().getResource("/de/prog3SemesterAufgabe/tb/icons/pageWhite.png").getFile()));
 

Tinobee

Mitglied
wie kann ichs sonst lösen und dabei relativ bleiben? und warum läuft es so in eclipse? PS: für mein laienhaftes verständnis ist ein bild eine datei
:bahnhof:
 

Wildcard

Top Contributor
Weil das Zeug in Eclipse noch kein zip ist, du also noch eine Datei hast.
Ich hab's dir doch schon gesagt, benutz getResourceAsStream
 

Tinobee

Mitglied
Code:
newProjectMenuItem.setImage(new Image( display, getClass().getResourceAsStream("/de/prog3SemesterAufgabe/tb/icons/pageWhite.png")));
so?
 

Wildcard

Top Contributor
Und ja, in deinem Fall ist dein Bild natürlich eine Datei, aber dann packst du alles in ein zip (bzw. jar) und damit ist es keine Datei mehr, sondern ein Eintrag in deinem Zip Archiv. Yet another bunch of bytes...
 

Wildcard

Top Contributor
Tinobee hat gesagt.:
Code:
newProjectMenuItem.setImage(new Image( display, getClass().getResourceAsStream("/de/prog3SemesterAufgabe/tb/icons/pageWhite.png")));
so?
Ja, wenn der Pfad passt. Bei SWT verwendet man normalerweise eine ImageRegistry, aber dafür wird wohl keine Zeit mehr bleiben...
 

Tinobee

Mitglied
also ich hab den code geändert. er ist zumindest fehlerfrei. jetzt bekomme ich beim starten die exeption
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-carbon-3347 or swt-carbon in swt.library.path, java.library.path or the jar file
dann muss ich die wohl noch hinkopieren und die manifest anpassen
 

Wildcard

Top Contributor
Die Lib muss im library path liegen. Auf deinem Windows Rechner läuft das natürlich sowieso nicht mit dem Mac SWT.
 

Tinobee

Mitglied
ich hab mir die datei swt-3.3.1.1-carbon-macosx.zip runtergeladen und in den lib ordner gelegt und die manifest geupdatet auf
Manifest-Version: 1.0
Main-Class: de.prog3SemesterAufgabe.tb.GUI
Class-Path: . lib/org.eclipse.core.commands_3.3.0.I20070605-0010.jar lib/org.eclipse.equinox.common_3.3.0.v20070426.jar lib/org.eclipse.jface_3.3.1.M20070910-0800b.jar lib/org.eclipse.swt.win32.win32.x86_3.3.2.v3347a.jar lib/swt-3.3.1.1-carbon-macosx.zip
und bekomme noch dasselbe problem. ich hab sonst keine *carbon* datei finden können oder im buildpath stehen?
jetzt sind dann wohl diese gemeint
22.10.2007 19:28 30.608 libswt-agl-carbon-3347.jnilib
22.10.2007 19:28 274.808 libswt-carbon-3347.jnilib
22.10.2007 19:28 76.784 libswt-cocoa-carbon-3347.jnilib
22.10.2007 19:28 798.028 libswt-pi-carbon-3347.jnilib
22.10.2007 19:28 104.756 libswt-xpcominit-carbon-3347.jnilib
22.10.2007 19:28 240.044 libswt-xulrunner-carbon-3347.jnilib
was mach ich mit denen? einfach in den lib ordner und jede einzeln noch in die manifest adden?
 

Tinobee

Mitglied
nope, aber nachdem ich das jetzt gemacht hab, hab ich die jnilib dateien alle im lib folder zusammen mit der *carbon*.zip und den übrigen 4 .jars - außerdem hab ich aus der swt-3.3.1.1-carbon-macosx.zip noch die swt.jar mit ins lib gelegt und in die mainfest geaddet. aber es geht immernoch nicht. der meckert immernoch über diese dateien obwohl ich die manifest.txt angepasst hab

du sagtest vorhin, ich müsse lediglich die nativen Bibliotheken austauschen. wie mache ich das? und wenn ich die austausche, fehlen sie dann nicht für windows?

PS: Danke, dass du mir beistehst!!!
 

Wildcard

Top Contributor
leg sie doch daneben und setz das property java.library.path oder swt.library.path, oder kopier alles in java/bin.
Wie gesagt, laufen wird es sowie nicht mit dem Mac Kompilat
 

Tinobee

Mitglied
ich verstehe nicht, was du meinst mit daneben und dem property. wo daneben und welches property? ich hab auch keinen ordner java/bin. ich hab jetzt alle files aus dem lib ordner nach jdk/bin und jre/bin kopiert. das sind im ganzen diese
22.10.2007 19:28 30.608 libswt-agl-carbon-3347.jnilib
22.10.2007 19:28 274.808 libswt-carbon-3347.jnilib
22.10.2007 19:28 76.784 libswt-cocoa-carbon-3347.jnilib
22.10.2007 19:28 798.028 libswt-pi-carbon-3347.jnilib
22.10.2007 19:28 104.756 libswt-xpcominit-carbon-3347.jnilib
22.10.2007 19:28 240.044 libswt-xulrunner-carbon-3347.jnilib
07.03.2008 23:38 0 log.txt
23.10.2007 19:43 103.384 org.eclipse.core.commands_3.3.0.I20070605-0010.jar
23.10.2007 19:43 92.736 org.eclipse.equinox.common_3.3.0.v20070426.jar
23.10.2007 19:43 975.152 org.eclipse.jface_3.3.1.M20070910-0800b.jar
23.10.2007 19:43 1.999.122 org.eclipse.swt.win32.win32.x86_3.3.2.v3347a.jar
23.10.2007 20:26 1.273.798 swt.jar
aber es will einfach nicht laufen wegen dieser doofen *carbon* sache. ich blick da echt nicht durch. hätte im leben nicht gedacht, dass das sooooo kompliziert ist
 

Tinobee

Mitglied
so, game over! :cry:

danke nochmal für deine geduld und unterstützung!

würde nach wie vor gern noch wissen, was du zuletzt gemeint hast. ich bin der einzige in meinem kurs, der die gui mit swt gebaut hat. hab das im rahmen des projektes gelernt und bin echt noch grün hinter den ohren damit. ich kenne von meinen leuten niemanden, der mir bei der problematik helfen könnte, da meist swing oder python verwendet wurde.

würde mich also über eine antwort trotz der abgelaufenen frist noch sehr freuen.

.... zeit fürs bett.... hab viel nachzuholen :autsch:

gruß, tino
 

Wildcard

Top Contributor
Steht doch alles in dem Link den ich dir weiter oben gepostet habe. Ob nun Windows oder Mac ist für die Systematik egal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
Avarion Swing JFrame unter Windows 10 kleiner ?! AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
S Swing Automatisch 2px Rahmen in Windows 8 AWT, Swing, JavaFX & SWT 0
A Swing JProgressbar im Windows Look & Feel Farbanpassung AWT, Swing, JavaFX & SWT 2
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Windows Fenster in einem Programm AWT, Swing, JavaFX & SWT 2
morphesus AWT Windows 7 Aero Look AWT, Swing, JavaFX & SWT 2
H Fenstergröße bei Mac und Windows gleich einstellen? AWT, Swing, JavaFX & SWT 3
R Problem mit TrayIcon unter Windows/Linux AWT, Swing, JavaFX & SWT 7
B Windows Look and Feel AWT, Swing, JavaFX & SWT 2
S Swing TrayIcon bei Systemdienst (Windows, Systemuser) AWT, Swing, JavaFX & SWT 7
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
S GUI aussehen unter Windows und Linux (und Mac) AWT, Swing, JavaFX & SWT 13
N Swing von Windows zu Ubuntu AWT, Swing, JavaFX & SWT 3
S Swing Threads Windows 7 64 bit AWT, Swing, JavaFX & SWT 12
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
A Swing Probleme unter Windows 7 AWT, Swing, JavaFX & SWT 5
Dragonfire Swing UTF-8 BOB Probleme mit Windows Look and Feel AWT, Swing, JavaFX & SWT 4
J Applet Linux(-(k)ubuntu-)-Firefox-Java-Plugin - Fensterschließprobleme die bei Windows so nicht auftreten AWT, Swing, JavaFX & SWT 4
F AWT MouseMotionListener e.getButton() ist immer 0 unter Linux und Windows AWT, Swing, JavaFX & SWT 6
E Implementierung des Windows Rechners? AWT, Swing, JavaFX & SWT 7
O AWT Shaped, Translucent Windows AWT, Swing, JavaFX & SWT 14
LittleJavaCup Suchmaschine programmieren (wie bei Windows) AWT, Swing, JavaFX & SWT 2
W TrayIcon in Windows 7 unscharf AWT, Swing, JavaFX & SWT 8
R Windows-Dateien auf GUI ziehen AWT, Swing, JavaFX & SWT 3
G Quaqua unter Windows AWT, Swing, JavaFX & SWT 15
S LookAndFeel Look and Feel mit Windows funktioniert nicht AWT, Swing, JavaFX & SWT 8
G Windows XP layout herausfinden AWT, Swing, JavaFX & SWT 7
J Java & Windows-7-Taskbar AWT, Swing, JavaFX & SWT 13
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
L JPanel mit Objekten selektieren wie unter Windows / Ubuntu AWT, Swing, JavaFX & SWT 4
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
M Fenster Windows-Like anordnen AWT, Swing, JavaFX & SWT 2
B Swing Windows Shortcuts ersetzen AWT, Swing, JavaFX & SWT 9
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
G JFrame und Windows Vista? AWT, Swing, JavaFX & SWT 4
G JFrame in Windows? AWT, Swing, JavaFX & SWT 4
D Transperency of Windows AWT, Swing, JavaFX & SWT 7
P SWT, Windows 2000, GDI+ und Microsoft Redistributable AWT, Swing, JavaFX & SWT 3
N Modale Windows AWT, Swing, JavaFX & SWT 2
G windows look and feel problem AWT, Swing, JavaFX & SWT 7
S KeyEvents in Linux und Windows AWT, Swing, JavaFX & SWT 14
M Globale Events in Windows abfangen AWT, Swing, JavaFX & SWT 2
M Windows-Applikationen minimieren AWT, Swing, JavaFX & SWT 4
G Windows Vista Gadget AWT, Swing, JavaFX & SWT 5
M Windows-Fensterinhalt in Java-Applikation darstellen AWT, Swing, JavaFX & SWT 6
G Windows Taste in KeyEvent? AWT, Swing, JavaFX & SWT 4
P SWT - "Combo" aus dem Windows-FileDialog AWT, Swing, JavaFX & SWT 3
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
K Windows Style als standard? AWT, Swing, JavaFX & SWT 2
S Bei SWT den Windows beenden Button manipulieren? AWT, Swing, JavaFX & SWT 4
T JGoodies unter Windows 98 AWT, Swing, JavaFX & SWT 4
F AWT Programm unter Linux anders als unter Windows ! AWT, Swing, JavaFX & SWT 8
N SWT: GUI Windows Events AWT, Swing, JavaFX & SWT 8
P Swing-Komponenten - Standart-Windows Design? AWT, Swing, JavaFX & SWT 4
I Windows LaF verbessern? AWT, Swing, JavaFX & SWT 12
F Schriftarten unter Windows und Linux AWT, Swing, JavaFX & SWT 6
T Windows-Typisches Menü für Swing AWT, Swing, JavaFX & SWT 3
G Windows LookAndFeel - Classpath AWT, Swing, JavaFX & SWT 6
M Windows file icons in Java verwenden AWT, Swing, JavaFX & SWT 2
TheJavaKid Windows 98 LaF AWT, Swing, JavaFX & SWT 4
G standard blau (windows) != color.blue AWT, Swing, JavaFX & SWT 2
G JTable wird im Windows Look&Feel nicht gedruckt AWT, Swing, JavaFX & SWT 5
B Komische Darstellung unter Windows 2000 AWT, Swing, JavaFX & SWT 2
W Problem mit Fensteranzeige in Windows AWT, Swing, JavaFX & SWT 3
O Windows Lautstärke regeln wie? AWT, Swing, JavaFX & SWT 23
C Java Programm wie Windows Taskleiste AWT, Swing, JavaFX & SWT 2
P Garfikfehler unter Windows 2000 AWT, Swing, JavaFX & SWT 3
T Programm gleich wie Windows Media Player in den Task geben AWT, Swing, JavaFX & SWT 10
H Wie bastelt man eine Baumstruktur wie im Windows-Explorer? AWT, Swing, JavaFX & SWT 5
A Probleme mit Windows Style (Background) AWT, Swing, JavaFX & SWT 4
javasdann JTable Kopfzeile in Windows Look&Feel unschön. AWT, Swing, JavaFX & SWT 3
L windows explorer AWT, Swing, JavaFX & SWT 4
O SWT-Anwendung für Windows und Linux verteilen AWT, Swing, JavaFX & SWT 3
B JTree + Linien im Windows L&F AWT, Swing, JavaFX & SWT 9
T Das Windows Fenster "Öffnen" mit Java darstellen AWT, Swing, JavaFX & SWT 9
V Windows Look für JTree? AWT, Swing, JavaFX & SWT 3
M Mit JTextPane erstelltes Dokument als HTML-Code ausgeben AWT, Swing, JavaFX & SWT 4
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben