Ergebnis 1 bis 5 von 5

Java-Programme vom USB-Stick ausführen

  1. #1 Zitieren
    Sergej Petrow
    Gast
    Da mich dieses Problem ein bisschen Zeit gekostet hat und andere das Problem vielleicht auch schon mal hatten, schreibe ich das einfach mal hier rein.

    Es geht darum, eine Jar-Datei auf einem Rechner auszuführen, der kein Java installiert hat und wo es auch keine Rechte dafür gibt.

    Auf dem USB-Stick wird ein Verzeichnis namens Java erstellt (oder wie auch immer) und kopiert dort die Ordner bin und lib aus dem eigenen Javaverzeichnis rein.

    Die jar Datei, die ausgeführt werden soll, wird ins Hauptverzeichnis reinkopiert.

    Dann erstellt man sich eine batch-Datei (mit dem Editor oder was auch immer gerade vorhanden ist). Eine Batchdatei wird mit .bat gespeichert, falls einer nicht weiß, was das ist.

    In dieser Batchdatei wird folgende Zeile eingetragen:

    start Java\bin\javaw.exe -jar MeineJar.jar
    (MeineJar.jar steht selbstverfreilich für die Jar-Datei, die ausgeführt werden soll)


    Jetzt läuft die Jar-Datei einfach mit Doppelklick auf die Batchdatei.

    Nehmen wir an, der USB-Stick ist Laufwerk H:

    So liegt im Hauptverzeichnis (H:\) die Jar-Datei, die ausgeführt werden soll und die Batchdatei.
    Im Unterverzeichnis h:\Java\bin und H:\Java\lib sind die benötigten Javadateien.

    So bekommt man sehr einfach auch auf Rechnern ohne Java-Umgebung ein Javaprogramm vom USB-Stick zum Laufen.
    Geändert von Sergej Petrow (03.09.2013 um 19:37 Uhr)

  2. #2 Zitieren
    Benutzer, die ihr Benutzerkonto per E-Mail bestätigen müssen
    Registriert seit
    May 2009
    Ort
    Hölle
    Beiträge
    1.351
    Du könntest das ganze noch ein wenig professioneller machen, indem du ein kleines C-Programm schreibst, welches über shellexecute() oder createprocess() deine jar-Datei ausführt.
    Dann hast du eine schönes exe-File, welchem du auch noch ein eigenes Symbol geben kannst.
    Headcool ist offline

  3. #3 Zitieren
    Sergej Petrow
    Gast
    Das muss ich mir mal genauer anschauen. Das hört sich sehr, sehr gut an. Kannst Du da ein bisschen mehr zu schreiben?

    Das Icon-Problem habe ich mit der Jar-Datei natürlich auch. Hab dazu auch keine Lösung gefunden. Wenn ich das ganze aber dann über eine Exe löse, die lediglich die Batch-Datei startet, kann ich dem ganzen sehr leicht ein schönes Icon verpassen.

  4. #4 Zitieren
    Benutzer, die ihr Benutzerkonto per E-Mail bestätigen müssen
    Registriert seit
    May 2009
    Ort
    Hölle
    Beiträge
    1.351
    Das ganze ist ziemlich einfach:

    Code:
    #include <windows.h>
    
    void execute(char* fileName, char* param)
    {
    	int hInstance = (int)ShellExecute(0, "open", fileName, param, 0, SW_SHOWNORMAL);
    	if (hInstance <= 32)
    	{
    		char* msg;
    		switch(hInstance)
    		{
    		case 0 :
    			msg = "The operating system is out of memory or resources.";
    			break;
    		case ERROR_FILE_NOT_FOUND :
    			msg = "The specified file was not found.";
    			break;
    		case ERROR_BAD_FORMAT :
    			msg = "The .exe file is invalid (non-Win32 .exe or error in .exe image).";
    			break;
    		case SE_ERR_ACCESSDENIED :
    			msg = "The operating system denied access to the specified file.";
    			break;
    		case SE_ERR_OOM :
    			msg = "There was not enough memory to complete the operation.";
    			break;
    		default : 
    			msg = "Could not open file.";
    		}
    		MessageBox(0, msg, 0, MB_OK | MB_ICONERROR);
    	}
    }
    
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
    {
    	execute("Java\\bin\\javaw.exe", "-jar myJar.jar");
    	return 0;
    }
    Der Großteil ist nur Fehlerbehandlung. Es sollte aber eigentlich alles ziemlich selbsterklärend sein.
    ShellExecute Doku findest du hier.
    Ich hoffe du weißt wie man ein C-File kompiliert.

    Die bat-Datei brauchst du übrigens nicht mehr, die wird ersetzt.
    Headcool ist offline

  5. #5 Zitieren
    Sergej Petrow
    Gast
    Hab es hinbekommen. Ist ja gar nicht so schwer:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>

    int main()
    {
    ShellExecute(0, "open", "MeinStartprogramm.bat", 0, 0, SW_SHOW);

    return 0;
    }

    EDIT:
    lol
    Trotzdem danke. Mit Fehlerabfrage ist bestimmt besser.
    Hab jetzt einfach die Batchdatei reingenommen. Aber ohne Batchdatei ist noch besser.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •