Check, welche Java Version installiert bevor ein Programm ausgeführt wird.

piro

Aktives Mitglied
Moin zusammen,

gibt es eine Methode, die die Java Version ausliest, die auf dem Rechner installiert und aktiv ist?

Möchte gerne mein Programm, bevor es startet, überprüfen lassen, ob die richtige Java Version installiert ist, die mein Programm benötigt.

Falls nicht, soll das Programm eine Nachricht ausgeben und das Programm beenden.

Ist sowas möglich?

Vielen Dank im Voraus.
Sven
 
T

troll

Gast
also nur mit reinem java wohl eher weniger ... grund : es muss mindestens java in der version drauf sein mit der du compiled hast ...

klar kann man sich einen launcher basteln den man für "1.0" compiled ... bringt aber nichts falls überhaupt kein java aufm system ist ...


lösung : z.b. Launch4J für Windows-EXE-Wrapper bietet die möglichkeit aus der registry auszulesen ob java installiert ist und wenn ja welche version ... falls das erforderliche minimum nicht erfüllt ist wird ein fehler-fenster angezeigt und im standard-browser die download-seite von java.com geöffnet ...

auch gibt es noch ein paar andere launcher ... wie z.b. jsmooth oder jar2exe (! achtung ! kostenpflichtig !) ... aber launch4j ist das bekannteste ...

wie es unter Unix aussieht muss ich leider passen ... aber ich denke das es hierfür bereits irgendwo im netz oder sogar hier in der FAQ in sauberes shell-script geben wird welches eine ähnliches funktion hat ...
 

piro

Aktives Mitglied
Moin,

danke schon mal für die Antworten.

Habe jetzt in der Main Methode als 1. mit system.getProperties(); die Java Version abgefragt und geschaut, ob die erforderliche Version drauf ist und wollte dann ggf. das Programm beenden.

Java:
public static void main(String[] args) {

// Check requirements: only JRE 1.7 or higher is allowed
String jre = System.getProperty("java.specification.version");
double version = Double.valueOf(jre);
	if (version != 1.7) {
		LOG.info("JRE 1.7 is required. Application will be terminated.");
		System.exit(1);
	}
...
}

Das Programm stürtz aber schon viel früher ab, d.h. er kommt da gar nicht hin.

Ich werde es wohl mit den Shell-Scripten machen müssen oder kann man auch einen Flag setzen beim erzeugen der JAR Datei, dass diese das selbst überprüft und ggf. es Meldung bringt?

Im Anhang die Fehlermeldung, die auftritt und ich somit gar nicht bis zur JRE Versionsabfrage komme.

Vielen Dank im Voraus.
Sven
 

Anhänge

  • CGMTiffManager-JRE 1.6.png
    CGMTiffManager-JRE 1.6.png
    68,5 KB · Aufrufe: 67
G

Gast2

Gast
Ich werde es wohl mit den Shell-Scripten machen müssen oder kann man auch einen Flag setzen beim erzeugen der JAR Datei, dass diese das selbst überprüft und ggf. es Meldung bringt?
Einige Launcher bieten sowas an, bspw. launch4j. Da wird beim Start die Java Version geprüft und bei Bedarf direkt zum Download verlinkt.
 

piro

Aktives Mitglied
kann man das wirklich nicht in die Jar Datei beim Erstellen mit aufnehmen, so dass die Bar-Datei selber den Check macht?
 

Ark

Top Contributor
Du musst die Klasse, in der die main-Methode drin ist, mit/für JDK 1.1 kompilieren (Argumente sind -source und -target beim Kompilieren). Dann tritt der gezeigte Fehler nicht mehr auf.

Gegenfrage: Kann man (unter Linux) dafür sorgen, dass eine JVM sich so verhält (zumindest, was die akzeptierten Klassenversionen angeht), als wäre sie eine 1.1er?

Ark
 

piro

Aktives Mitglied
Ich habe leider keine Ahnung.

Mir stellt sich nur die Frage, ob das eine gute Idee ist mit dem JDK 1.1 für die Main Klasse. Bin da noch nicht so fit.
Außerdem wüsste ich auch gar nicht wie ich mein Ant Script anpassen sollte, damit nur die Main Klasse ein anderes JDK bekommt und die anderen Klassen das aktuelle.
Gibt das ein Beispiel, wo die Klassen mit unterschiedlichen JDKs kompiliert werden?

Wie macht ihr denn das, wenn eure Anwendung nur mit einem bestimmten JRE oder höher funktioniert?

Danke im Voraus.
Sven
 
Zuletzt bearbeitet:

Ark

Top Contributor
Hier mal ein kleiner Abriss aus einem meiner Ant-Skripte:
[XML]
<property name="target" value="1.7" />
<property name="source" value="1.7" />
<property name="maintarget" value="1.1" />
<property name="mainsource" value="1.1" />

[…]

<javac classpathref="theclasspath"
debug="true"
debuglevel="${debuglevel}"
destdir="${bindir}"
excludes="${mainsrcfile}"
includeantruntime="false"
source="${source}"
target="${target}"
>
<src path="${srcdir}" />
</javac>
<javac classpathref="theclasspath"
debug="true"
debuglevel="${debuglevel}"
destdir="${bindir}"
includeantruntime="false"
source="${mainsource}"
target="${maintarget}"
>
<src path="${mainsrcdir}" />
</javac>
[/XML]
Nicht wahnsinnig sauber, aber es tut. :D

Ark
 
G

Guest2

Gast
Moin,

Wie macht ihr denn das, wenn eure Anwendung nur mit einem bestimmten JRE oder höher funktioniert?

Webstart! Damit lässt sich die notwendige Version exakt festlegen. Außerdem können weitere VM Parameter mit angegeben werden, z.B. der zugewiesene Speicher. Weitere Features wie etwa Auto-Updates oder Dateiverknüpfungen lassen sich ebenfalls ohne zusätzlichen Aufwand nutzen. Und natürlich bleibt alles Plattformunabhängig.

EXE-Wrapper sind höchstens traurig.

Viele Grüße,
Fancy
 

Bernd Hohmann

Top Contributor
Das Programm stürtz aber schon viel früher ab, d.h. er kommt da gar nicht hin.

Es scheint so zu sein, dass Deine Klasse com.cat.mak.cgmtiffmanager.Main einen statischen Init hat oder den von einer Oberklasse erbt sodass noch vor dem main(...) inkompatibles Zeug nachgezogen wird.

Sinnvoller wäre aber insgesamt folgender Weg: Du schreibst eine kleine Vorschaltklasse mit der Versionsprüfung, kompilierst das gegen Java "version steinzeit" und packst es in ein eigenes JAR. Aus dieser Vorschaltklasse wird dann das Hauptprogramm in einem separaten JAR File aufgerufen.

Bernd
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
N MsgPack - Null Check Allgemeine Java-Themen 5
Ananaskirsche Website mit Browser-Check aufrufen Allgemeine Java-Themen 8
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
P business check Allgemeine Java-Themen 2
1 Check read/write permission for file Allgemeine Java-Themen 4
S Kleiner Texteditor mit MD5-Check Allgemeine Java-Themen 4
L Java Performance Check Tool Allgemeine Java-Themen 3
W 8 Bit CRC-Check (Umsetzung C->Java) Allgemeine Java-Themen 3
S HILFE! UML-Moddelierung. Ich check es nit! Allgemeine Java-Themen 4
S versions-check Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
P Feststellen, Welche Classes ich aus einem JAR nutze? Allgemeine Java-Themen 6
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
F Java Web App - welche Technologien? Allgemeine Java-Themen 11
S Welche API? Allgemeine Java-Themen 6
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
K Welche Zertifizierung passt? Allgemeine Java-Themen 10
A Variable, welche Exeption wirft als "Global" deklarieren Allgemeine Java-Themen 13
J Videokonferenz mittel Java ? Welche Möglichkeiten habe ich ? Allgemeine Java-Themen 2
J Welche Layouts benutzt ihr? Allgemeine Java-Themen 2
G Wiedereinstieg, welche Java Version empfehlt ihr Allgemeine Java-Themen 7
M Welche Exceptionbehandlung ist sinnvoll? Allgemeine Java-Themen 3
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
S Welche Nutzen bringen Lamda Expressions? Allgemeine Java-Themen 1
M Welche Umgebung und Frameworks für mich als Umsteiger Allgemeine Java-Themen 6
C Welche Styleconvention Allgemeine Java-Themen 0
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
R LinkedList und Threads - welche Methode ist besser? Allgemeine Java-Themen 2
F Welche Systeme für hoch skalierbare Webanwendung? Allgemeine Java-Themen 7
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
G Welche Datenstruktur? Allgemeine Java-Themen 19
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
G Wie kann man sehen, welche Applikationen mit java arbeiten? Allgemeine Java-Themen 17
L Social Media Webportal -> Welche Technologie (JEE, GWT) Allgemeine Java-Themen 8
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
vladimir Welche API für Grafik und Drag&Drop Allgemeine Java-Themen 3
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
U Welche 2D-API? Allgemeine Java-Themen 4
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
M Welche Dateiformate kann Java einlesen?? Allgemeine Java-Themen 26
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14
E Welche Icons für sichtbar /unsichtbar Allgemeine Java-Themen 2
J Welche Lösung für Servlets und JSPs in Eclipse? Allgemeine Java-Themen 5
N Für welche Art von Berechnungen macht JCUDA Sinn? Allgemeine Java-Themen 12
A Welche Exception verwenden? Allgemeine Java-Themen 2
T Welche Art von Hilfe?? Allgemeine Java-Themen 5
N welche run.bat? Allgemeine Java-Themen 3
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
Developer_X Welche Dateien kann Java laden? Allgemeine Java-Themen 9
G Welche Schreibeweise ist richtig Allgemeine Java-Themen 16
ARadauer welche java version wird benutzt Allgemeine Java-Themen 4
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
F Welche dicken Java-Bücher kennt ihr? Allgemeine Java-Themen 31
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K [erledigt] JVM welche läuft Allgemeine Java-Themen 9
G synchronized-Sclüsselwort: welche Reihenfolge zum Betreten? Allgemeine Java-Themen 6
E welche standalone Version von Tomcat benutzen? Allgemeine Java-Themen 6
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
F welche Datenstruktur? Allgemeine Java-Themen 9
A feststellen, welche Klassen ein Interface implementieren Allgemeine Java-Themen 3
P welche jar enthält was? Allgemeine Java-Themen 5
F Welche Datenstruktur Allgemeine Java-Themen 2
V Welche Oberfläche empfehlt ihr mir? Allgemeine Java-Themen 19
Z Welche Datenstruktur verwende ich h_ier bloss ? Allgemeine Java-Themen 14
S Welche jar's werden wirklich benötigt?` Allgemeine Java-Themen 5
G Dateien löschen welche vor heute erstellt wurden? Allgemeine Java-Themen 7
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
I Welche Möglichkeiten bietet Java um Records in Dateien zu sp Allgemeine Java-Themen 10
B Drucken - welche Bibliothek favorisiert Ihr? Allgemeine Java-Themen 16
J Welche Daten für Ative-X Funktion? Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
B Welche Java-Version? Allgemeine Java-Themen 7
S Welche Javaversion ist in meinem Linux? Allgemeine Java-Themen 2
M 2 Javaversionen welche aktiv? Allgemeine Java-Themen 3
C Datumsfelder auslesen - egal welche Zeitzone Allgemeine Java-Themen 2
F SuppressWarnings("xxx") - welche Möglichkeiten gib Allgemeine Java-Themen 4
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
L Welche Collection ist die richtige ? Listen mergen Allgemeine Java-Themen 3
S Welche Datenstruktur passt bei mir? Allgemeine Java-Themen 6
D Welche Datenstruktur? Allgemeine Java-Themen 2
B Grafische Oberfläche - Welche Komponenten? Allgemeine Java-Themen 5
T JMF, welche Codecs gibts, und vor allem, wo? Allgemeine Java-Themen 9
H Welche Scriptsprache verwendet ihr in Java Allgemeine Java-Themen 9
G Welche Referenzsoftware ist in Java geschrieben? Allgemeine Java-Themen 8
P Welche Collection verwenden? Allgemeine Java-Themen 4
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben