# JRE installieren oder nicht ?



## volkerk (1. Jun 2018)

Hallo,

leider bin ich jetzt etwas verwirrt. Folgendes:

Auf meinem Rechner (Windows/) erstelle ich ein JAR . Nun dachte ich wenn dieses Programm auf einem anderen Rechner laufen soll , dass ich dort die JRE (mit der gleichen Versinsnummer) installieren muss.

Nun habe ich aber gelesen es würde reichen wenn man die JRE zusammen mit dem JAR File auf den Rechner kopiert (ohne die JRE zu installieren) . Stimmt das so ?

Leider habe ich es nicht hinbekommen.

Falls das stimmt wäre es sehr nett wenn mir das jemand mal erklärt was man da alles kopieren muss und natürlich auch mit welchen Versionen das geht (habe es auch leider mit 64 bzw 32 bit Betriebssystemen zu tuen)

Vielen Dank im Voraus


Volker.


----------



## httpdigest (1. Jun 2018)

Es gibt hierfür mehrere Möglichkeiten:
- jlink (falls du Java 9 oder neuer verwendest und deine Anwendung sowie alle Abhängigkeiten Jigsaw Module sind)
- libGDX/packr
- Launch4j (wenn du Windows stand-alone executables bauen möchtest)
- javapackager (Teil des Oracle JDKs)

Ich würde vielleicht erstmal mit Launch4j anfangen, da es eine schöne GUI bereitstellt und aber auch in Maven und Ant Builds eingebunden werden kann.


----------



## thecain (1. Jun 2018)

jre einfach kopieren sollte reichen. Java muss dann einfach mit dem ganzen Pfad angesprochen werden oder manuell dem PATH hinzugefügt werden.

Launch4j ist da nicht nötig


----------



## volkerk (4. Jun 2018)

Hallo,

Vielen Dank für die Antworten , leider hatte ich am WochenEnde sehr wenig zeit um zu Antworten.

Habe jetzt Folgendes gemacht : 
Launch4J installiert , EXE erstellt , -> lief bei meinem Rechner (da ist aber auch JAVA installiert) problemlos. 
Aber, leider bekomme ich an einem Rechner ohne JAVA (bzw mit alter JRE) die gleiche FehlerMeldung "MainClass nicht gefunden"

Wenn ich die JRE kopiere ist es genauso.

Als IDE habe ich Eclypse , kann es sein dass mir Eclypse da etwas abnimmt was ich nun aber doch im Java-Code eintragen muss ?  Muss ich da im JAVA code noch etwas angeben ? Den PATH habe ich zum Beispiel noch nie gebraucht ?

Das sind denke ich bestimmt Anfänger fragen (aber das trifft ja auf mich zu) 

Viele Grüße 


Volker.


----------



## Xyz1 (4. Jun 2018)

Dann halt das Wichtigste in kurzform: Java ist abwärtskompatibel, das heißt wenn Du es zum Bleistift mit Java 8 compilierst kannst Du es auf dem Zielrechner/Zielsystem mit dem vorher installiertem JRE 8, 9 oder 10 starten.
Mehr brauchst nicht zu wissen.


----------



## thecain (4. Jun 2018)

überhaupt nichts mit der Frage zu tun, aber ok...

@TE beim starten -cp . noch angeben, dann sollte es gehen (Wenn du im Verzeichnis bist, in dem dein Programm befindet


----------



## Xyz1 (4. Jun 2018)

thecain hat gesagt.:


> überhaupt nichts mit der Frage zu tun, aber ok...


Ziemlich Vorlaut, wenn man vom Thema keine Ahnung hat, finde ich....
Aber nicht jeder ist belehrbar. 

Aber ich sage es auch gerne nochmal Dich aus Themen fernzuhalten in denen ich antworte.


----------



## thecain (4. Jun 2018)

Lies dir die Frage nochmal genau durch. Auf dem Zielrechner ist noch keine Java installiert...

Auf die Frage wer wieviel Ahnung hat lässt sich hier im Forum mit dir wohl niemand mehr ein...


----------



## volkerk (6. Jun 2018)

Hallo,

Vielen Dank Euch beiden.

Aber nun um deas Thema zu beenden , muss ich nun doch nochmals die Möglichkeiten aufzeigen (so wie ich es verstanden habe, damit ich am WE noch etwas zum goooogeln habe)

Also:

1. Ich kann auf meinem Rechner das älteste JaVA installieren und somit erreichen dass auf dem Zielrechner ein neueres ist . Ich denke für mich muss es nicht das neuste JAVA sein aber leider habe ich auch ab und zu gar kein JAVA installiert.

2. Das erstellen einer EXE mit diesem LAUNCH4J  da stellt sich mir die Frage ob ich beim erstellen nicht auch diesen Parameter CP (denke ClassPath) setzen kann, denn später kann ich weil ich ja eine EXE habe das nicht mehr machen.

3. Das ist das was ich ja am Anfang gefragt habe : Kann ich die JRE nicht ohne installieren der JAR Datei beifügen ? wo kopiere ich dann was hin ?


Ich würde es am liebsten mit der EXE machen (wenn ich es hinbekomme , gibt es da einen Link zu einer Anleitung?) 
Da ich das Programm auf einem USB stick lassen wollte wäre natürlich 3 auch OK
1 wäre natürlich das einfachste aber wie gesagt wenn JAVA nicht installiert ist.

Könnt Ihr mir vielleicht zu den Punkten 2,3 noch etwas sagen , bin für jeden Tip sehr dankbar.

Viele Grüße 

Volker.


----------



## volkerk (14. Jun 2018)

Hallo,

leider bin ich noch zu keinem Ergebnioss gekommen.

Kann mir nicht jemand mal erklären warum ich bei der EXE die ich über Launch4J erstellt habe auch die Meldung "MaiClass nicht gefunden" kommt, was muss ich da einstellen? muss ich da im JAVA-Code etwas angeben?

Wenn ich die Lösung mit dem kopieren der JRE angehen will wo stelle ich die dann hin? kann ich das alles JRE und JAR zusammen auf einem USB Stick haben.

Binn für jede Hilfe dankbar , Ihr wisst das doch bestimmt alle.


Viele Grüße

Volker.


----------



## mihe7 (14. Jun 2018)

Ich gehe davon aus, dass

die JAR-Datei myapp.jar heißt,
die main-Methode in Klasse de.myapp.Main deklariert ist
U der Laufwerksbuchstab für Deinen USB-Stick ist und
Dein JRE unter C:\Program Files\java\jre1.8.0_171 installiert ist
Du kopierst zuerst einmal die JAR-Datei auf Deinen Stick, danach hast Du eine Datei U:\myapp.jar. Dann kopierst Du den jre-Ordner von Deinem Rechner auf den Stick, danach gibt es den Ordner U:\jre1.8.0_171. Jetzt erstellst Du die Datei U:\myapp.bat mit folgendem Inhalt

```
@echo off
%~dp0\jre1.8.0_171\bin\javaw.exe -cp %~dp0\myapp.jar de.myapp.Main
```
Ungetestet, sollte aber funktionieren.

EDIT: gestartet wird die Anwendung natürlich mit einem Doppelklick auf myapp.bat


----------



## volkerk (14. Jun 2018)

Hallo,

Vielen Dank, werde ich heute Abend (allerdings sehr spät) probieren und morgen antworten.

Viele Grüße Volker.


----------



## volkerk (15. Jun 2018)

Hallo,

dank der Hilfe habe ich nun einen Quantensprung (jedenfalls für mich) geschafft: Es kommt eine andere Fehlermeldung. Ich denke aber die ist erklär und lösbar.

Beim starten der Batch-Datei erkennt er dass ich nun eine 64bit JRE habe und die nicht zu dem 32bit Betriebssystem passt.

Als JRE habe ich 1.8.0.151  werde da nun mal nach 32bit ausschau halten und dann am montag nochmals probieren.

Ein schönes Wochenende an alle.

Gruss Volker.


----------



## mihe7 (15. Jun 2018)

Das ist halt der Unterschied zu einer Installer-Lösung, die das passende JRE installiert


----------



## volkerk (18. Jun 2018)

Hallo,

so jetzt habe ich fast das ganze Wochenende gesucht und leider keine 32bit Version gefunden (welche bei denen mit 64bit dabeisteht gibt es genug).

Nun müsste ich (danke für den Hinweis mit der installer Lösung) auf einem 32 bit Rechner JAVA installieren und dann die JRE nehmen.

Noch eine ganz unwissende Frage: Bei der JRE steht 1.8.0.151 (oder so ähnlich) dabei woher weiss ich denn nun welche JAVA version das ist , denn auf den DownloadSeiten steht immer nur 8,9,10,SE,ME usw.

vielleicht ist das relativ einfach zu erklären ?


Vielen dank


Gruß

Volker.


----------



## mihe7 (18. Jun 2018)

volkerk hat gesagt.:


> so jetzt habe ich fast das ganze Wochenende gesucht und leider keine 32bit Version gefunden



??? Google: jre 8 32 bit - erstes Ergebnis führt zur Downloadseite von Oracle, dort nimmt man "Windows x86 Offline" (jre-8u171-windows-i586.exe)

Die Versionsnummern sind bei Java eine Wissenschaft für sich 

Java 8 = 1.8.0_x, wobei x die Updatenummer kennzeichnet. D. h. die Java Runtime Environment 8 Update 171 hat intern die Versionsnummer 1.8.0_171

Ab Java 9 gilt dieses Schema nicht mehr. Das JRE dürfte es eigentlich nur als SE geben.

SE steht für Standard Edition. 
ME ist Micro-Edition (Handy)
EE ist Enterprise-Edition

Damit sind verschiedene APIs gemeint. SE sind die Standard-APIs, EE die Enterprise APIs usw.


----------



## Dukel (18. Jun 2018)

Wie konnte man ein 64bit JRE auf einem 32bit OS installieren?


----------



## volkerk (18. Jun 2018)

Hallo,

Danke nochmals.

Genau das "??? Google: jre 8 32 bit" wusste ich nicht ich habe nach "1.8.0..... 32 bit" gegoogelt.

Den Download für "jre-8u171-windows-i586.exe" habe ich dann auch irgendwann gesehen brachte das aber nicht mit 1.8.0.... in verbindung.

Durch die installation dachte ich findet JAVA die richtige JRE umgebung.


So werde das jetzt ausprobieren (wahrscheinlich erst am Wochenende)


Vielen Dank nochmals.


Volker.


----------



## mihe7 (18. Jun 2018)

Dukel hat gesagt.:


> Wie konnte man ein 64bit JRE auf einem 32bit OS installieren?


Das 64-Bit JRE wurde entpackt auf einen USB-Stick kopiert.


----------



## Xyz1 (19. Jun 2018)

Ein Java 8 Programm beißt sich nur bei extrem hohen Ressourcen(anforderungen) mit einem 32bit JRE 8.
Das ist mal wieder völliger Quatsch der hier geschrieben wird.
Link für nicht so versierte: https://java.com/de/download/
Der wählt direkt den richtigen Installer. 

@volkerk Ist Java echt die richtige Programmiersprache für dich, wenn du noch nichtmal weißt wie man es starten kann? (Und scheinbar blind irgendwelchen exe Bundles vertraust?)


----------



## mihe7 (19. Jun 2018)

DerWissende hat gesagt.:


> Das ist mal wieder völliger Quatsch der hier geschrieben wird.


Was genau?


----------



## volkerk (19. Jun 2018)

Hallo,

Warum soll ich wissen wie man ein JAVA Programm startet?

Entweder habe ich es bis bis jetzt in der IDE (Eclypse) gestartet oder ich habe mir eine JAR datei erzeugt , welche dann sogar auf anderen Rechnern durch einfaches anKlicken lief (sofern die gleiche JRE installiert war)

Um dann mal ganz bei Deinen Worten "Mehr musst du nicht wissen" zu bleiben, hat mich das dann wirklich nicht interessiert.

Aber warum soll ich denn dann nun , nur weil ein kleines Problem auftritt das mit JAVA sein lassen ? Und das aufrufen mit diesen Parametern hat für mein Empfinden auch nicht so viele mit der Sprache zu tuen.

Was meinst Du denn mit "irgendwelchen Bundels" genau den Link den Du postest da steht doch die JRE zum download? Und darum ging es ja.

Vielen Dank für die bisherige Hilfe kann es allerdings erst wieder am Wochenende ausprobieren.

Gruß Volker.


----------



## Xyz1 (19. Jun 2018)

Ihr habt alle nicht genau gelesen.
@mihe7 Ich meinte natürlich dich nicht.
@volkerk Von gleiche hat niemand gesprochen. Leseverständnis wäre schön.
Noch welche Fragen offen?


----------



## mihe7 (19. Jun 2018)

Um hier mal etwas Licht ins Dunkel zu bringen: salopp formuliert spielt es keine Rolle, welches JRE auf dem Zielsystem vorhanden ist, so lange es mindestens dem Stand des JDKs entspricht, mit dem das Programm übersetzt wurde. 

Ich schreibe "Stand", weil die Versionsnummern von Java ... das hatten wir ja schon. Im Klartext: ein mit JDK 1.1 übersetztes Programm funktioniert auch mit einem 1.2er, 1.3er, ..., 1.8er JRE, ein mit einem 64 Bit JDK übersetztes Java-Programm funktioniert auch mit einem 32-Bit JRE.


----------



## mrBrown (19. Jun 2018)

mihe7 hat gesagt.:


> Ich schreibe "Stand", weil die Versionsnummern von Java ... das hatten wir ja schon. Im Klartext: ein mit JDK 1.1 übersetztes Programm funktioniert auch mit einem 1.2er, 1.3er, ..., 1.8er JRE, ein mit einem 64 Bit JDK übersetztes Java-Programm funktioniert auch mit einem 32-Bit JRE.


Wobei das ab 9 komplizierter wird und nicht mehr immer klappt


----------



## mihe7 (19. Jun 2018)

mrBrown hat gesagt.:


> Wobei das ab 9 komplizierter wird und nicht mehr immer klappt


Darum habe ich bei 1.8 auch das Zählen aufgehört


----------



## volkerk (20. Jun 2018)

Hallo,

aber genau da liegt ja mein Problem : auf dem Zielrecher ist ein altes oder kein JAVA.

Die Vorgehensweise mit der JRE auf dem USB stick die Funktioniert nur bei 64bit rechnern weil es die JRE von meinem Rechner (64bit) ist.

Wie komme ich nun an eine 32bit 1,8,,,,  JRE . Ich kann auf dem 32bit Rechner nichts installieren. Muss ich nun wirklich auf meinem Rechner ein 32bit OS installieren dann JAVA installiern um an die JRE zu kommen ?

Kann ich JAVA auch ohne Internet installieren, weil wenn ich dann so eine ISO Datei auf dem Stick hätte dann kann ich die auch auf dem 32bit Rechner installieren und dann hätte ich ja die JRE.

Viele Grüße

Volker.


----------



## mrBrown (20. Jun 2018)

Wurde der entsprechende Link nicht schon genannt?
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

Dort gibt es auch eine 32bit-Windows-Version, die nicht installiert, sondern nur entpackt werden muss (wenn ich mich nicht grad gewaltig irre...)

Die einfach auf den Stick legen und das Java-Programm damit starten, die entsprechende bat-Datei wurde weiter oben schon mal gezeigt.
Mit etwas Erweiterung wählt die dann auch das passende JRE fürs System aus.


----------



## volkerk (20. Jun 2018)

Hallo,

Sorry , 
ja da hast Du recht.

und ich habe auch noch darauf geantwortet ....

Das lag wahrscheinlich daran , dass als ich das Probiert habe ich es auf meinem Rechner ausgeführt habe und dann wenn ich das nun richtig verstanden habe ein 64bit Version erstellt wurde.

Dann probiere ich es die nächste Woche (früher geht es nicht) noch mals.

Vielen Dank Euch allen

Volker


----------



## volkerk (20. Jun 2018)

Hallo,

soeben ist muir wieder eingefallen was bei der ...i586...exe  schiefgelaufen ist:

die Anleitung die mir mihe7 freundlicherweise gepostet hat beinhaltete ja ein PfadAngabe zu der javaw.exe.

Nun habe ich aber eine exe .

Entschuldigt meine unwissende Frage , aber , wie schreibe ich das denn nun ?


Viele Grüße 

Volker.


----------



## mrBrown (20. Jun 2018)

Du brauchst *nicht* die exe-Version, sondern die Version zum entpacken: jre-8u171-windows-i586.tar.gz

Die entpackst du auf den USB-Stick und hast dann ganz normal eine javaw.exe


----------



## volkerk (20. Jun 2018)

Hallo,

Vielen Dank.

Gruß Volker.


----------



## mihe7 (20. Jun 2018)

Oops, sorry, ja ich hatte Dir die .exe genannt. @mrBrown hat natürlich recht: die gepackte Version nehmen und auf den Stick entpacken. Vorsorglich: falls Du ein Problem mit dem Entpacken von .tar.gz unter Windows haben solltest, nimm z. B. 7zip, https://www.7-zip.org


----------



## volkerk (2. Jul 2018)

Hallo,

leider hatte ich die letzte Woche keine Zeit zum ausprobieren und zum antworten , entschuldigung.

Es klappt immer noch nicht (ich überlege wirlich ob JAVA für mich geeignet ist).

Ich habe nun einen JRE Ordner auf meinem USB Stick , die angepasste BAT und die JAR Datei.

Vorher ist die fehlermeldung (32 bit 64 bit Version gekommen ) Nun kommt leider gar nichts . Das DOS Eingabe fenster kommt aber vom JAVA Programm ist nichts zu sehen . Mit einem 64bit Rechner und der anderen JRE geht es.

Muss ich im JAVA Code noch irgend etwas angeben ? Aber mittlerweile ist der Code soweit abgespeckt dass eigentlich nur noch ein frame mit einem label gezeigt wird.

Bekomme ich von JAVAW irgendwelche FehlerLogs ?

Viele Grüße

Volker (Ratlos)


----------



## mihe7 (2. Jul 2018)

Hallo Volker Ratlos 

Wenn Du Konsolenausgabe willst, nimm java statt javaw. Du kannst Dir auch in der Batch-Datei Dinge ausgeben lassen (echo ist Dein Freund) und/oder auf Eingabe des Nutzers warten ("pause").



volkerk hat gesagt.:


> ich überlege wirlich ob JAVA für mich geeignet ist


Mit Java hat das vermutlich nur am Rande was zu tun. Alles, worum es geht, ist ein Programm (das in dem Fall halt zufällig Java ist), das sich auf einem USB-Stick befindet, unter Angabe von ein paar Parametern auszuführen.


----------



## volkerk (4. Jul 2018)

Hallo,

Echo und Pause hatte ich schon eingebaut

Der Tip mit JAVA statt JAVAW war sehr gut, nun kommt eine Fehlermeldung.

Leider findet er wieder die "HauptKlasse" nicht.

Jetzt muss ich aber am Wochenende erst mal schauen ob ich mich da nicht wirklich verschrieben habe.

Prinzipiell kann ich doch das JAR File anders benennen wie das JAVA Programm und demzufolge auch wie die HauptKlasse im JAVA Programm ?

Vielen Dank vorers bis auf bald

Volker


----------



## mrBrown (4. Jul 2018)

volkerk hat gesagt.:


> Prinzipiell kann ich doch das JAR File anders benennen wie das JAVA Programm und demzufolge auch wie die HauptKlasse im JAVA Programm ?


Was meinst du mit "JAVA Programm"?

Name der Jar und Name der Hauptklasse haben nichts miteinander zu tun. Im Manifest muss nur die passende stehen (oder wenn du kein manifest hast: beim starten muss die passende Klasse angegeben werden)


----------



## mihe7 (4. Jul 2018)

volkerk hat gesagt.:


> Jetzt muss ich aber am Wochenende erst mal schauen ob ich mich da nicht wirklich verschrieben habe.



Starte Dein Programm doch einfach mal auf Deinem Rechner und nicht vom Stick von der Konsole aus:

java -jar xyz.jar

bzw.

java -cp xyz.jar meine.Hauptklasse

Wenn das funktioniert, hast Du den prinzipiell benötigten Befehl. Den packst Du - angepasst um die Pfade natürlich - in die Batch-Datei auf den Stick. Dann rufst Du - wieder auf Deinem Rechner - die Batch-Datei vom Stick auf (achtest dabei darauf, dass das 32-Bit-JRE vom Stick genommen wird). Wenn das geht, sollte es auf dem anderen Rechner auch funktionieren.


----------



## volkerk (5. Jul 2018)

Hallo,

es geht:

Mein Fehler war die Groß-/KleinScreibung bei der -cp angabe.

-jar geht mit der richtigen JRE jetzt auch.

Nun habe ich noch 3 ganz kleine Fragen.

1. Bekomme ich das CMD Fenster unsichtbar ?

2. Auf meinem USB stick habe ich ja nun eine 32bit und eine 64bit JRE ob ich nun die eine oder andere nehme entscheide ich ja in der .bat datei , ist der Befehl VER dafür geeignet . Bei meinem Recher hier kommt nur "Windows XP" ohne 32 (es gibt doch auch 64bit XP) ?

3. Mit einem LINUX Rechner geht das ja dann mit der richtigen JRE (glaube ich gesehen zu haben) auch so ähnlich?

Vielen Dank.

Gruß Volker.


----------



## mihe7 (5. Jul 2018)

zu 1. das geht über Umwege. Verschwindet das Konsolenfenster denn nicht gleich wieder, wenn Du javaw statt java verwendest?

zu 2. du brauchst keine zwei JREs auf dem Stick: die 32-Bit JRE läuft auf 64-Bit-Systemen genauso.

zu 3. ja, hier erstellst du ein shell-Skript statt einer .bat. Allerdings: unter Linux hängt die Ausführbarkeit von Programmen/Skripten nicht von der Dateiendung sondern von den Dateiattributen ab. Ggf. wird die Datei also nicht einfach so ausführbar sein. Und natürlich brauchst Du dann auch ein Linux-JRE auf dem Stick.


----------



## volkerk (5. Jul 2018)

Hallo,

1.JAVAW brachte das Fenster nicht zum verschwinden . ich habe START vergessen dann verschwindet es mit JAVAW

2.Das ist ja gut

3. Brauche ich erst in ca 3 Wochen 

Vielen Dank nochmals für Eure Hilfe und Geduld. 
Entschuldigung dass es durch meine GroßKlein schwäche so lange gedauert hat.


Gruß Volker.


----------

