Java Programm mit Batch-Datei starten

dalco

Aktives Mitglied
hallo,
noch eine Frage.

Java:
@echo off
java -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start javaw -Xms100m -Xms300m

mit dieser Batch-Datei starte ich mein Programm am Desktop-Pc mit Win10 problemlos.

Die selbe Datei am Laptop allerdings mit Win11 startet nicht, wird kurz schwarz und ist weg.
Die Pfade passen, selbe jre-version, der selbe mysql-connector... alles das selbe.

Liegt das am Win11 oder hat jemand ne andere Idee.
Vielen Dank schonmal
Tino
 
um sowas zu debuggen einfach eine CMD öffnen ( das macht bat unter anderem ) und den befehl rein kopieren, dann bleibt das fenster auch offen

( vllt willst du das ja dann wenn es funktioniert )
du kannst dir eine "fake exe" bauen wo kein fenster aufkommt vom terminal oder powershell

1. erstell ein .vbs skript
Java:
command = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle Hidden -file Y:\Powershell\Test.ps1"
 
set shell = CreateObject("WScript.Shell")
 
shell.Run command,0

hier musst du den File Pfad für das powershell skript festlegen

2. in das powershell skript schreibst du den java aufruf
3. um jetzt das vbs skript zu starten eine verknüpfung auf das vbs skript erstellen ( doppelklick geht auch ) aber man will ja vbs verstecken

damit kannst du dir ohne library oder extra installierte sachen das terminal komplett weg machen lassen
 
Zuletzt bearbeitet von einem Moderator:
java -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start javaw -Xms100m -Xms300m
Ich habe meine Zweifel, dass das überhaupt funktioniert. Entweder man startet mit java.exe oder javaw.exe - aber beides im selben Befehl macht keinen Sinn.
Wenn man ein Java-Programm weitergeben möchte, ist so ein Vorgehen auch nicht mehr zeitgemäß. Man kann auch native Launcher erstellen: https://dev.java/learn/creating-runtime-and-application-images-with-jlink/
 
um sowas zu debuggen einfach eine CMD öffnen ( das macht bat unter anderem ) und den befehl rein kopieren, dann bleibt das fenster auch offen

( vllt willst du das ja dann wenn es funktioniert )
du kannst dir eine "fake exe" bauen wo kein fenster aufkommt vom terminal oder powershell

1. erstell ein .vbs skript
Java:
command = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle Hidden -file Y:\Powershell\Test.ps1"
 
set shell = CreateObject("WScript.Shell")
 
shell.Run command,0

hier musst du den File Pfad für das powershell skript festlegen

2. in das powershell skript schreibst du den java aufruf
3. um jetzt das vbs skript zu starten eine verknüpfung auf das vbs skript erstellen ( doppelklick geht auch ) aber man will ja vbs verstecken

damit kannst du dir ohne library oder extra installierte sachen das terminal komplett weg machen lassen
danke, das überfordert mich gerade, aber ich werde mal daran basteln.
mfg Tino
 
naja das ist halt die billige version ohne extras

ansonsten nimmt man in java heutzutage jlink und jpackage her
 
Ich habe meine Zweifel, dass das überhaupt funktioniert. Entweder man startet mit java.exe oder javaw.exe - aber beides im selben Befehl macht keinen Sinn.
Wenn man ein Java-Programm weitergeben möchte, ist so ein Vorgehen auch nicht mehr zeitgemäß. Man kann auch native Launcher erstellen: https://dev.java/learn/creating-runtime-and-application-images-with-jlink/
hallo,
also auf meinem win10 Desktop Rechner funktioniert es genau so ganz gut, es ist bestimmt veraltet, wir haben das vor jahren so programmiert und ich kenne mich nicht sooo damit aus, dachte eben win11 schafft das genau so.
Das was "yfons123" vorschlägt verstehe ich leider nicht so ganz.
trotzdem danke an euch alle.

Mercy falls jemand noch meinen 2-zeiler mit einer kleinigkeit umschreiben kann 🙂
Tino
 
naja das ist halt die billige version ohne extras

ansonsten nimmt man in java heutzutage jlink und jpackage her
ja, aber gibt es keine möglichkeit mehr die zeile anzupassen:
" java -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start javaw -Xms100m -Xms300m "

so dass es startet, mehr will ich gar nicht verstehen
 
wenn du den befehl in der console also cmd oder powershelll ausführst solltest du die fehlermeldung und den grund des schließens heraus finden

wie ich in meiner aller ersten zeile geschrieben hatte
 
Es ist halt nur einmal wichtig, dass Du die Zeile verstehst:
java -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start javaw -Xms100m -Xms300m

a) es wird java aufgerufen - im Gegensatz zu javaw.
b) Da wird dann der Classpath gesetzt und dann die main Methode in start.start aufgerufen.
c) das javaw -Xms100m -Xms300m sind dann nur noch Parameter, die der main Methode übergeben werden.

Die Erwartung, dass -Xms von java ausgewertet wird, ist also schlicht falsch. Aber das war eh ein bisschen dubios, da zwei Mal -Xms gesetzt wurde. (Da wird der ursprüngliche Ersteller vermutlich -Xmx gemeint haben!)

Zur Erläuterung die Info zu -Xms / -Xmx:
Code:
    -Xms        Legt die anfängliche Java-Heap-Größe fest                                                                           
    -Xmx        Legt die maximale Java-Heap-Größe fest


Aber bezüglich des Fehlers: Starte die bat Datei auf der Console oder füge noch ein pause ein:
Code:
@echo off
java -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start javaw -Xms100m -Xms300m
pause

ja, aber gibt es keine möglichkeit mehr die zeile anzupassen:
Also genau das würde ich mir doppelt überlegen. Das ist zumindest eine Arbeitsweise, die ich ablehne. Wenn man Probleme erkennt, dann behebt man diese. Und da ist offensichtglich etwas schief gelaufen und dem sollte man nach gehen (und es dabei dann bereinigen!)
 
Ich nehme mal an (du hast es ja nicht beschrieben), das Package heist "start" und die Klasse mit der main-Methode heißt auch "start" - Klassennamen schreibt man zwar eigentlich groß aber das nur mal so.
Also alles was nach start.start kommt sind demnach Argumente/Parameter der Java-Klasse. Demnach müsste der Befehl etwa so sein:
Code:
java -Xms100m -Xmx300m -classpath "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar;. start.start
Wobei die aktuelle Version von Java 1.8 Version "1.8.0_351" ist, mysql-connector 5.0.5 ist auch schon 7 Jahre alt. Hier wären also mal ein paar Updates fällig.
Weiterhin kannst du "C:\Program Files\Java\jre1.8.0_251"\lib\mysql-connector-java-5.0.5-bin.jar eigentlich weglassen. da alles was im jre/lib-Ordner ist, eigentlich sowieso im Classpath verfügbar ist.
 
danke,
also ich habe nun die neueren versionen geladen:
@echo off

java -classpath "C:\Program Files\Java\jre1.8.0_351"\lib\mysql-connector-java-8.0.30-bin.jar;. start.start javaw -Xms100m -Xms300m
pause
auch das "-Xms100m -Xms300m" habe ich vorangestellt oder weggelassen, aber es kommt immer der fehler:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: start/start has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
D
und die datei heißt wirklich "start" und ist im package "start".
wenn ich es im eclipse starte, geht alles ohne fehlermeldungen, das ganze hier soll doch nur ein desktop icon werden, welches die start.java ausführt ohne es im eclipse zu starten.
ps. und ich habe mittlerweile das aktuellste geladen , auch die neueste java jre.
danke Tino
rücken Sie eine beliebige Taste . . .
 
Damit haben wir doch erst einmal den Fehler schon gefunden. Du versuchst die Anwendung mit Java 8 (Class file version 52.0) zu starten - es ist aber mit Java 18 (Class file version 62.0) übersetzt worden.

Also Java 18 installieren und damit starten.
 
Damit haben wir doch erst einmal den Fehler schon gefunden. Du versuchst die Anwendung mit Java 8 (Class file version 52.0) zu starten - es ist aber mit Java 18 (Class file version 62.0) übersetzt worden.

Also Java 18 installieren und damit starten.
ok, ich dachte, dass ich die neueste Version von der java-jre installiert habe von der java.com download seite.
Wie ist das gemeint, hat das Eclipse dann mit Version 62 abgespeichert, und ich habe die java jre(52).
Wie gesagt, ich habe sowohl vom eclipse undder jre die neuesten, die ich fand installiert.
gruss Tino
 
Also java.com von Oracle ist etwas, zu dem ich nichts schreiben darf ... ich habe halt eine klare Meinung zu dieser Firma.

Aber rein technisch gesehen: Deinstalliere das JRE ... das brauchst du nicht. Ein JDK enthält auch ein JRE. Somit reicht die Installation von dem JDK bzw. dem OpenJDK.

Und meine Empfehlung ist hier auch ganz klar: Nutz ein OpenJDK. Mit dem von Eclipse fährt man gut und das Setup bietet die wichtigen Optionen; https://adoptium.net/de/
(Ist übrigens auch die Empfehlung von Microsoft, die da aktiv unterstützen: https://www.microsoft.com/openjdk)
 
. ich habe halt eine klare Meinung zu dieser Firma.
ahja oracles tolles lizenz system "die features sind installiert aber wenn du sie anklickst musst du es nach installieren"

das ist doch gar nicht erlaubt so eine lizenz zu haben in der EU und dann sagen sie einfach bei einem verstoß "lizenzier es nach oder wir nehmen die lizenz weg"

sympathie 10 von 10, einfach großartige firma ,einwandfrei
 
ahja oracles tolles lizenz system
ROFL. Die hatten schon immer so lustige Dinge. Nach dem Motto: wenn Du die Oracle DB im Mondschein installierst, musst Du Faktor sqrt(2) rechnen und auf einem Intel kommt nochmal das sqrt(17)/2-fache dazu.

das ist doch gar nicht erlaubt so eine lizenz zu haben in der EU und dann sagen sie einfach bei einem verstoß "lizenzier es nach oder wir nehmen die lizenz weg"
a) warum sollte das nicht erlaubt sein?
b) wie können die Dir was wegnehmen, was Du gar nicht hast?

Keine Ahnung, wie da die rechtliche Bewertung ist, ich sehe das relativ einfach: ich brauche eine Lizenz, die mir eine Nutzung in einer bestimmten Weise ermöglicht. Will ich das Ding anders nutzen, muss ich mich um eine Lizenz kümmern, ansonsten verletze ich die Verwertungsrechte des Rechteinhabers (in dem Fall von Oracle). Wenn dann eine Firma hergeht und sagt: hey, Du hast das Zeug bisher ohne Lizenz genutzt, bitte nachlizensieren, finde ich das zumindest besser als eine Abmahnung mit Schadenersatzforderungen, die im Bereich der Fiktion angesiedelt sind.
 
folgende situation
wir hatten lizenz software checker program aktiviert für die lizenz überwachung, das programm hat alarm geschlagen dass ein feature von oracle benutzt wurde das nicht lizensiert wurde

oracle ist gleich gekommen mit "lizenziert das nach für den zeitraum wo ihr das benutzt habt" und wollten ein paar milliönchen dafür
hat sich aber raus gestellt dass das feature nirgends installiert war und die lizenz software checker program hatte einen programm fehler

damit waren wir fein raus.


von meiner schulung hat der prof erklärt wie oracle das behandelt mit einem ungefähren zitat
Oracle hat bei einem lizenz verstoß noch niemals in der EU geklagt da sie wissen dass ihr lizenz system so nicht zulässig ist und sie wissen dass sie vor gericht immer verlieren werden.
Deshalb gehen sie den weg, entweder lizenziert man die features nach für die kosten oder oracle enzieht die Oracle lizenz des servers.

damit hat man dann 3 wochen zeit von oracle auf eine andere datenbank zu wechseln aber das schafft fast niemand, somit kommt oracle damit immer durch
 
Zuletzt bearbeitet von einem Moderator:
Das Vorgehen von Oracle steht so in etwa auch in den Lizenzbedingungen.
Das dumme ist nur, dass die nicht zu ner dem EU Recht stehen.

Das ist generell ein schwieriges Thema …

Was aber bei Oracle entscheidend ist, ist der Umgang mit den Kunden. Was für Partner will man sich aussuchen? Jemand, der einem bei jeder Gelegenheit massiv zwischen die Beine tritt oder jemand, der einen eher fair behandelt und unterstützt?

Man kann das Verhalten ja vergleichen z.B. mit Microsoft …

Also wer ein Produkte von Microsoft kauft, dem kann man bei Treffen einfach mal etwas schlagen … das ist ein Masochist und der freut sich dann …
 
Das dumme ist nur, dass die nicht zu ner dem EU Recht stehen.
Ich weiß immer noch nicht, warum und in welchen Punkten. Das würde mich interessieren.

Was aber bei Oracle entscheidend ist, ist der Umgang mit den Kunden.
Da gibt es auch keine zwei Meinungen.

Also wer ein Produkte von Microsoft kauft, dem kann man bei Treffen einfach mal etwas schlagen … das ist ein Masochist und der freut sich dann …
Wieso denke ich gereade an Eclipse? 😛
 
Vor allem ... wie komme ich da auf Microsoft? Das war ein freudscher Verschreiber oder wie nennt man das?

Ich wollte natürlich schreiben: Wer Produkte von Oracle kauft .... Microsoft ist - was Umgang mit Kunden angeht - aus meiner Sicht sehr vorbildlich. Die haben da extrem viel aufgebaut, was wirklich gut ist.

  • Kauf eine günstige Windows Lizenz die ungültig ist, gib diese an Microsoft mit Info, woher Du die bezogen hast und bekomm eine original Lizenz von Microsoft.
  • Community bei Microsoft - das ist schon genial. Die Unterstützung mit MVP, MCC und so ... Das ist schon etwas, das nicht schlecht ist (und den Support entlastet).

Da gibt es auch keine zwei Meinungen.
Da würde ich einmal EINEN Anwalt fragen. Wobei da die Gefahr groß ist, dass Du auch bei einem Anwalt 3 oder 4 Meinungen zu hören bekommst 🙂 Spätestens bei 2 Anwälten hast Du aber 3+ Meinungen.
(Ich bin sehr vielseitig. Ich kann nicht nur Eclipse-Bashing und Oracle-Bashing ... ich kann das mit extrem vielen Zielgruppen!)

Wieso denke ich gereade an Eclipse? 😛
Ja, ... wobei wir jetzt diskutieren müssen, wer der größere Masochist ist:
  • Der, der einen Anwalt fragt
  • Der Produkte von Oracle lizensiert für viel Geld
  • Der Eclipse verwendet

Wobei das natürlich auch alles eine Preisfrage ist. Eclipse ist zumindest die Billiglösung. Es gibt vielleicht den einen oder anderen Eclipse Nutzer, der neidisch auf CEOs schaut, die Verträge mit Oracle haben und dann Nachts vom Lotto-Jackpott träumen: Dann können sie auch eine Oracle Datenbank lizensieren und sich im Anschluss von Oracle vor Gericht zerren lassen! Was für die einen ein Alptraum ist vielleicht für andere eine Art Paradies?
 
Also wer ein Produkte von Microsoft kauft, dem kann man bei Treffen einfach mal etwas schlagen … das ist ein Masochist und der freut sich dann …
also aus dem letzten post hab ich gelesen dass du eig oracle schreiben wolltest



wenn man jetzt die lizenz situation vergleicht Oracle Datenbank vs MSSQL

in mssql gibts die 4 lizenz arten
Java:
1. Enterprise
2. Developer, kostenlose Enterprise solange keine User drauf sind
3. Express, kostenlose mini Datenbank
4. Standard Edition die nicht alle features hat
das ist noch überschaubar und verständlich
In keiner Edition kann ich was drücken was gegen die lizenz verstößt also ganz simpel "alles was ich klicken darf ist erlaubt"
die tools wie sql server management studio und andere mini tools sehen auch halbwegs gut aus, sind halt steinalt
egal wie man es hindreht man ist billiger dran mit mssql



in oracle ist das thema "lasst euch überraschen"
alles ist zwangsweise installiert und wehe man verdrückt sich..uiui... dann brennt aber die hütte
es ist schon so gezielt aufgebaut dass man einen lizenz verstoß begeht
und virtualisierung uiui das taugt ja oracle gar nicht, man virtualisiert nicht auf exadata? na dann kosten * 10 lockig flockig
und die tools ... also man steht auf und will wieder ins bett, wer will sich sowas anschauen, steinalt und scheiße ausschauen ist halt 1e sache zu viel
einfach nur eine großartige firma, vorallem für lotto spieler geeignet


es ist schon traurig wenn microsoft als "wies gemacht gehört" beispiel heran gezogen werden kann
man könnte jetzt noch postgresql mit oracle vergleichen aber die haben halt nicht so eine große firma dahinter, ich glaube das war EDB firma die für postgresql einen support anbietet aber die ist ja bei weitem nicht so groß wie oracle oder windows
 
Ihr habt Sorgen! Als Entwickler nutze ich Oracle einfach. Die Probleme überlasse ich anderen. Wenn ein Projekt oder Kunde kein Oracle will, dann nehme ich eben etwas anders. So what ...
 
hallo,
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: start/start has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
einwas verstehe ich noch nicht ganz, wenn ich meine datei "start" im eclipse ausführe wird das ganze mit version 61 "übersetzt", und bei meiner batch-datei, die doch nur ein doppelklick sein soll auch auf diese "start" datei, dann mit version 52???
Sind dann 2 versionen von java auf meinem rechner?
ps. und warum geht es dann am desktop rechner problemlos?
Tino
 

Zurück
Oben