webentwicklung-frage-antwort-db.com.de

Führen Sie die .jar-Datei aus einem Java-Programm aus

Wie kann ich eine lokale JAR-Datei mit einem Java-Programm ausführen?

Die JAR-Datei befindet sich nicht im Klassenpfad des Java-Aufruferprogramms.

32
vfgjrk

Ich schlage vor, Sie verwenden eine ProcessBuilder und starten eine neue JVM.

Hier ist etwas zum Einstieg:

ProcessBuilder pb = new ProcessBuilder("/path/to/Java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
38
aioobe
    Process proc = Runtime.getRuntime().exec("Java -jar Validate.jar");
    proc.waitFor();
    // Then retreive the process output
    InputStream in = proc.getInputStream();
    InputStream err = proc.getErrorStream();

    byte b[]=new byte[in.available()];
    in.read(b,0,b.length);
    System.out.println(new String(b));

    byte c[]=new byte[err.available()];
    err.read(c,0,c.length);
    System.out.println(new String(c));
11
Anderson Lopes

Unter Windows können Sie auch Folgendes tun: 

Runtime.getRuntime().exec("cmd /c start jarFile");

auf diese Weise können Sie auch die Priorität Ihres Prozesses festlegen (normal/niedrig/etc).

4
Johnydep

Erstens ist die Beschreibung Ihres Problems etwas unklar. Ich verstehe nicht, ob Sie die Klassen aus der JAR-Datei laden möchten, um sie in Ihrer Anwendung zu verwenden, oder die JAR-Datei enthält eine Hauptdatei, die Sie ausführen möchten. Ich werde davon ausgehen, dass es der zweite ist.

Wenn ja, haben Sie hier viele Optionen ... Die einfachste wäre die folgende:

String filePath; //where your jar is located.
Runtime.exec(" Java -jar " + filepath);

Voila ... Wenn Sie die JAR-Datei nicht ausführen müssen, sondern die Klassen aus ihr laden, lassen Sie es mich wissen.

3
Nikola Yovchev

Sie können eine JAR-Datei von überall aus ausführen, indem Sie nur diesen einen Zeilencode verwenden.

    Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));

woher

new File("your path to jar")

Ich hoffe es hilft.

Vielen Dank.

2
Syeda Zunairah
2
Chris Dennett

Um eine ausführbare JAR-Datei in Ihrer Java) - Anwendung auszuführen, können Sie JarClassLoader von https://docs.Oracle.com/javase/tutorial/deployment) kopieren /jar/examples/JarClassLoader.Java

Benutze es so. In diesem Snippet ist jarUrl die URL, von der die JAR heruntergeladen werden soll, z. B. Datei: /tmp/my-jar.jar und args ist das Array von Zeichenfolgen, die Sie übergeben möchten Befehlszeilenargumente für das jar.

JarClassLoader loader = new JarClassLoader(jarUrl);
String main = loader.getMainClassName();
loader.invokeClass(main, args);

Denken Sie daran, dass Sie jetzt die Binärdatei einer anderen Person in Ihren Code einfügen. Wenn es in einer Endlosschleife hängen bleibt, hängt sich Ihr Thread auf. Wenn es System.exit () aufruft, wird Ihre JVM beendet.

0
Mzzl
  1. Fügen Sie Ihrem Projekt eine Jar-Bibliothek hinzu
  2. Hauptklasse importieren (siehe Manifest in der JAR-Datei)
  3. Statische Methode main mit Argumenten aufrufen

    String args[] = {"-emaple","value"};
    PortMapperStarter.main(args);