Frage Konvertieren Sie .jar in eine Anwendung für Windows, Linux und Mac


Ich habe eine Java - Anwendung mit Eclipse erstellt (exportiert in *.Krug), und ich möchte es für Windows exportieren (.exe), Linux (.?) und MAC (.?). Ich besitze keine Linux- oder MAC-Maschine, daher weiß ich nicht, welche Erweiterungsdatei für jede benötigt wird. Also habe ich mehrere Fragen:

  • Für Windows habe ich Launch4j verwendet, um meine * .exe-Datei zu erstellen, aber gibt es eine Entsprechung für MAC und Linux?

  • Meine Anwendung speichert Optionen in der Windows-Registrierung (ich benutzte die "JavaRegisrtyWrapper"library). Gibt es für MAC und Linux ein" Registry "-Äquivalent (und wie kann ich dort Informationen lesen / schreiben)?

  • Ist es möglich, die Windows-Warnung "Unbekannter Herausgeber" für Benutzer zu vermeiden, wenn sie versuchen, die * .exe-Datei nach dem Download zu starten? (Und werde ich das gleiche Problem auf MAC und Linux haben?). Ich habe versucht, mein eigenes Zertifikat zu erstellen und die Datei mit "signtool.exe" zu signieren, aber es hat nicht funktioniert.

Vielen Dank !

BEARBEITEN: Bevor ich die * .jar-Datei in ein anderes Format umwandle, muss ich meinen Code ändern, um das Betriebssystem des Benutzers und den Ordner "Dokumente" für jeden Fall zu erhalten. Ich denke os.name kann die erste Anfrage erfüllen, kann ich aber verwenden user.home + "Documents" für Windows, Linux & Mac (wenn dieser Ordner existiert ...)?


7
2018-06-30 13:36


Ursprung


Antworten:


Skript, das die JAR-Anwendung ausführt

Unter Linux und Mac OS können Sie ein Bash-Skript erstellen, das die .jar-Datei ausführt:

#!/bin/bash java -jar application.jar 

Windows-Registrierung entspricht auf Unix-basierten Systemen

Es gibt kein Windows-Registrierungsäquivalent für Linux und Mac Os. Sie können Ihre Konfiguration in z. B. Textdateien speichern. Maschinenspezifische Konfigurationen werden normalerweise in der Verzeichnisstruktur / etc gespeichert.

Hier ist eine ähnliche Superuser-Frage: https://superuser.com/questions/295635/linux-equivalent-of-windows-registry

Windows EXE-Dateien signieren

Zum Signieren von Windows EXE-Dateien können Sie versuchen, zu verwenden Microsoft Sign Tool.

Hier ist eine ähnliche Stackoverflow-Frage: Signieren einer Windows EXE-Datei


3
2018-06-30 13:54



Linux muss nicht unbedingt eine Erweiterung haben. Normalerweise haben Binärdateien einfach keinen. Um sie als ausführbar zu markieren, setzen Sie das Flag + x für die Datei, wodurch die Datei die Rechte erhält, die ausgeführt werden sollen.

OSX hat auch keine Erweiterung. Wenn Sie Ihr Programm auf einem Mac installieren möchten, wird es in einem Ordner (auf Mac sehen diese nicht wie Ordner aus, sie sehen aus wie Programme, aber auf anderen Betriebssystemen erscheinen diese als Ordner) mit der Erweiterung .app.

Launch4j kann Ihnen die Binärdateien für alle Plattformen, Mac OSX, Linux und Windows generieren.

Das "Alarm" -Problem besteht darin, dass Ihre App nicht signiert ist. Das Signieren einer Anwendung bedeutet, dass sie versiegelt wird, damit sie später nicht geändert werden kann (sie könnte modifiziert werden, würde aber das Siegel aufbrechen). Unter OSX können Sie ein Entwicklerzertifikat erhalten und verwenden codesign auf der .app (codesign -s "certname" mit installiertem Zertifikat). Unter Linux haben Sie dieses Problem nicht, da die Programme normalerweise nicht signiert werden (die Pakete eines Paketmanagers werden normalerweise signiert, diese Informationen gehen nach der Installation verloren).

Unter Windows können Sie auch ein Zertifikat kaufen. Nachdem Sie dies getan und Ihr Programm signiert haben, kann die "Warnung" unter den Einstellungen eines Benutzers erscheinen, aber es wird der Entwickler- oder Firmenname anstelle von unbekannt angezeigt (unbekannt erscheint nur, wenn nicht signiert oder ein signiertes Programm wurde danach geändert Unterzeichnung).


0
2018-06-30 13:49



Führen Sie es einfach aus: java -jar [Ihre Jar-Datei]

oder lege das in eine Skriptdatei wie: myscript.sh Ausführungsberechtigungen festlegen:

> chmod ugo+x myscript

Beispielskript:

#!/bin/bash
$JAVA_HOME/bin/java -jar [jarfile]

dann starte ./myscript.sh


0
2018-06-30 13:51