hatte gestern ein ziemlich merkwürdiges Problem:
Wollte eine selbst geschriebene .jar bei meiner Tante am Pc laufen lassen. Da sie noch kein Java installiert hatte, habe ich ihr Java 8.60 installiert. Dann habe ich versucht die .jar zu starten, aber es ging nur ganz kurz ein Konsolen-Fenster auf und direkt wieder zu. Wenn man die .jar über ein Konsolen-Fenster gestartet hat, konnte man dann lesen, das es die Fehlermeldung “Hauptklasse in …jar konnte nicht gefunden werden” gab. Dies hat mich sehr verwirrt, da es vorher auf meinen Pc problemlos lief. Habe also auch noch eine andere .jar die bei mir lief ausprobiert, mit der selben Fehlermeldung. Als nächstes habe ich Java nochmal deinstalliert und neu aufgespielt, jeweils mit einem Neustart des PCs. Dadurch ist das Problem nicht weggegangen. Habe mich dann als Administrator angemeldet, hier lief das Programm fehlerfrei. Als nächsten Versuch habe ich dann für die java.exe eingestellt, das es zum ausführen Administratorrechte braucht, dann hat man als normaler Benutzer beim starten einer .jar das Administratorpasswort eingeben müssen, aber es lief trotzdem nicht.
Hat jemand eine Idee woran es liegen könnte, oder was ich das nächste mal ausprobieren könnte? Weil das man sich jedes mal als Administrator anmelden muss um die .jar auszuführen finde ich unpraktisch und unverständlich.
Das habe ich nicht ausprobiert, werde ich aber das nächste mal machen wenn ich bei ihr bin. Weißt du was das Problem dann beheben würde, bzw wie ich es dauerhaft für alle .jar dann zum laufen kriegen würde?
Also die Java Datei läuft nur wenn ich als Administrator angemeldet bin, auch wenn ich die java.exe nur mit Administratorrechten laufen lasse (als normaler Benutzer) klappt es auch nicht.
Ich erstelle die .jar mit eclipse über export runnable JAR file, eine der Klassen enthält eine main, auf anderen PCs und als Administrator läuft die .jar auch
In der cmd habe ich nicht viel gemacht, nur mit cd zum Verzeichnis navigiert und xx.jar eingegeben. Dann kam als Fehlermeldung Hauptklasse in …/xx.jat konnte nicht gefunden werden
Kann nicht garantieren, dass der Wortlaut exact stimmt, da ich es gerade nicht ausprobieren kann und ich leider keinen Screenshot gemacht habe
Mir würden jetzt viele Dinge einfallen, aber letztlich dürfte es auf folgendes hinauslaufen : mit einem JDK mal versuchen ein kleines Hello-World mit Swing ans laufen zu bekommen … wenn schon dass fehlschlägt bleibt sicher nicht viel außer Backup und platt machen.
[QUOTE=CyborgBeta]
java -jar MeinJar.jar [Parameter(s)]
Grüße[/QUOTE]
Wäre das nicht der Aufruf der intern gemacht wird, wenn die java.exe als Standard für .jar eingetragen ist?
Schade,
hatte die Hoffnung, das er die .jar nur nicht richtig entpacken kann, weil dem normalen Benutzer dafür Zugriffsrechte fehlen, und es ohne Probleme klappt, wenn ich allen Benutzern Rechte für diesen bestimmten Ordner gebe. Weiß nicht, ob java das irgendwo auf der Festplatte entpackt, oder wo ich den Pfad finden/einstellen kann.
Sonst versuche ich das mal mit dem JDK.
Naja, da der Rechner nicht meiner ist muss ich mal gucken, ob das in Ordnung ist den platt zu machen, vor allem da es bis jetzt das einzige Programm ist das nicht richtig funktioniert. Vor allem finde ich es besonders unverständlich, das es als Administrator funktioniert, aber mit Administrator Rechten nicht.
Das sollte man als Entwickler eigentlich wissen, genau so wie dass auch ein eigener Aufruf von “javaw.exe” unter Windows in einem Terminal grundsätzlich ohne Ausgabe endet und man daher schon bewusst manuell die Terminal-Variante java.exe nutzen muss.
Bzgl. deines letzten Satzes: zeigt schon dass da irgendwas am Kern von Windows schon nicht mehr ganz korrekt funktioniert. Zur Erklärung: holt man sicher über UAC Admin-Rechte ist das eine bewusste privileg-elevation, der Prozess sollte so nun also in einem vollständigen Admin-Context laufen, wie als ob er auch direkt von einem Admin-Konto aus gestartet wurde. Da aber schon dass scheinbar nicht sauber funktioniert lässt darauf schließen dass intern was ziemlich kaputt ist. Um solche schweren System-Fehler zu korrigieren muss man entweder genau wissen was man macht (und meist auch “von außen” an den Datenträger) oder setzt die Kiste gleich lieber sauber neu auf.
Auch ist deine Annahme dass Java irgendwas temporär auf die Platte entpacken würde (ja, ein Jar ist auch nur ein Zip mit speziellem Grund-Aufbau) falsch. Java hat native Zip-Fähigkeiten und läd die Daten aus den gepackten Jar-Files direkt in den RAM, da wird nix entpackt. Ebenfalls eine Grundlage die dir bekannt sein sollte.
Und bevor die Frage kommt: wenn du nicht weist wie man auf der Console ein Jar lauffähig zusammenbaut solltest du erstmal alle aktuellen Projekte stoppen und noch mal bei den Basics anfangen die dir dann ganz offenbar fehlen.