Eigene .jar mit anderer .jar öffnen

FelixBaum

Mitglied
Hallo Leute,

ich habe ein kleines Programm geschrieben, mit dem Programm soll dann ein anderes ebenfalls von mir geschriebenes Programm geöffnet werden, ich weiß nur nicht welchen Pfad ich angeben muss. Die beiden .jar's liegen in einem Verzeichnis.

Java:
try {
     Process p = Runtime.getRuntime().exec("notepad");
} catch (Exception e) {
     e.printStackTrace();
}

Damit kann ich notepad öffnen, nur wie öffne ich damit mein anderes Programm ?
 

Gucky

Top Contributor
Ich glaube es ist möglich die main Methode des anderen Programmes anzusteuern. Aber ich weiß nicht, ob es dann ein "Programm im Programm" oder ein eigenständiges neues wird. Sonst kannst du auch das JRE ansteuern und diesem dein Programm übergeben. Oder mit Desktop.getDesktop().open(PFAD) öffnest du Dateien oder Programme mit dem mit ihnen verknüpften Programm.
 

Beatsleigher

Bekanntes Mitglied
Java:
    private void start() {
        ProcessBuilder process = new ProcessBuilder(System.getProperty ("java.home") + "/bin/java", "-jar", System.getProperty("user.home") + "/JarZumÖffnen.jar");
Process pr = process.start();
    }

Sent from my GT-I9505 using Tapatalk
 

notepass

Mitglied
Das Stichwort hier: Reflections

Damit ist es möglich zur Laufzeit Methoden anderer Java-Dateien auszuführen.

Ich habe ein bespiel in meinen "generals" (Auch wenns sehr verkorst ist und überarbeitet wird in den nächsten Tagen...)

Diese kannst du hier finden: https://github.com/notepass/npGenerals/blob/master/src/de/notepass/general/util/Util.java
Dort findest du die Methode "execMethod" welche eine angegebene Methode aus einer anderen Jar-Datei ausführt. Ich werden den Quellcode noch einmal hier hinein kopieren, jedoch wird dieser im gegensatz zum GitHub-Code wahrscheinlich nicht upgedatet... Schau also besser da nach ;)

Hier der zu diesem Zeitpunkt aktuelle Code:
Java:
/**
     * <p>Executes a method from a external jar</p>
     * @param AjarFile Jar-File from that the code should be excuted
     * @param sourceClass Class from which the code should be executed
     * @param method Execution method
     * @param parameterTypes List of classes to use for the call
     * @param args Value of the parameters
     * @return Return of method
     * @throws IOException
     * @throws ClassNotFoundException
     * @throws NoSuchMethodException
     * @throws IllegalAccessException
     * @throws InstantiationException
     * @throws InvocationTargetException
     */
    //Executes an Method form an external Java-Application
    public static Object execMethod(File AjarFile, String sourceClass, String method, Class<?> [] parameterTypes, Object [] args) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
        //Load .jar Files
        String jarFilePath=AjarFile.getAbsolutePath();

        JarFile jarFile = new JarFile( jarFilePath/*path*/);
        Enumeration e = jarFile.entries();

        URL[] urls = {new URL("jar:file:"+jarFilePath+"!/")};
        URLClassLoader c1 = URLClassLoader.newInstance(urls);

        while (e.hasMoreElements()) {
            JarEntry je = (JarEntry) e.nextElement();
            if (je.isDirectory() || !je.getName().endsWith(".class")) {
                continue;
            }
            String className = je.getName().substring(0,je.getName().length()-6);
            className = className.replace("/",".");
            Class<?> endClass = c1.loadClass(className);
            if (className.equals(sourceClass)) {
                Method m1 = endClass.getDeclaredMethod(method,parameterTypes);
                return m1.invoke(endClass.newInstance(),args);
            }
        }
        return null;
    }

Das ist jetzt natürlich nur schlechter C&P-Code, aber um es in etwa zu verstehen müsste es reichen...
Wenn nicht, google doch einfach mal nach Reflections ;)


MFG,
note
 

FelixBaum

Mitglied
Danke erstmal für die schnellen und umfangreichen Antworten. :toll:

Ich hatte jetzt an irgendwie sowas gedacht:

Java:
try {
     Process p = Runtime.getRuntime().exec("./Dateizumöffnen.jar");
} catch (Exception e) {
     e.printStackTrace();
}

Ist sowas nicht möglich ? :rtfm:
 

Beatsleigher

Bekanntes Mitglied
Danke erstmal für die schnellen und umfangreichen Antworten. :toll:

Ich hatte jetzt an irgendwie sowas gedacht:

Java:
try {
     Process p = Runtime.getRuntime().exec("./Dateizumöffnen.jar");
} catch (Exception e) {
     e.printStackTrace();
}

Ist sowas nicht möglich ? :rtfm:

Wenn du mit Process arbeiten willst, musst du den Code nehmen, den ich geschrieben habe. Da ist alles drin, was zum Starten der Jar benötigt wird.

Sent from my GT-I9505 using Tapatalk
 

FelixBaum

Mitglied
Wenn du mit Process arbeiten willst, musst du den Code nehmen, den ich geschrieben habe. Da ist alles drin, was zum Starten der Jar benötigt wird.

Sent from my GT-I9505 using Tapatalk


Und was muss ich dann als Pfad angeben ? Muss dann auch bei dem 2. System.getProperty "user.home" in die Klammer ? Wenn ich nicht weiß, wo der User die Dateien liegen hat, was muss ich dann eintragen ?
 

Beatsleigher

Bekanntes Mitglied
Und was muss ich dann als Pfad angeben ? Muss dann auch bei dem 2. System.getProperty "user.home" in die Klammer ? Wenn ich nicht weiß, wo der User die Dateien liegen hat, was muss ich dann eintragen ?

Als Pfad gibst du den Pfad zur Jar ein. Das war nur ein Beispiel.
Das Beispiel war darauf bezogen, dass du die Jar in dem Nutzerordner gespeichert hattest, und ja, da es eine Methode ist, muss es
Java:
 System.getProperty("user.home");
sein.

Wenn du nicht weißt, wo der user die Datein hat, kannst du ganz einfach mit ein paar rekursiven Funktionen danach suchen.

Hier ist eine Beispiel-Methode aus eines meiner Programme, die jedoch nicht Datein sucht, sondern diese löscht. Aber mit ein bisschen Willenskraft, kriegst du es schon heraus :)

Java:
private void delete(File file) throws IOException {
        if (file.isDirectory()) {
            if (file.list().length == 0) {
                file.delete();
            } else {
                for (String tmp : file.list()) {
                    File fileToDelete = new File(file, tmp);
                    
                    // Delete files recursively
                    delete(fileToDelete);
                }
            }
            if (file.list().length == 0) {
                file.delete();
            }
            
        } else {
            file.delete();
        }
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
RalleYTN Eigene ScriptEngine? Allgemeine Java-Themen 14
L Eigene Dependency Injections definieren? Allgemeine Java-Themen 4
K Eigene API erstellen? Allgemeine Java-Themen 13
T Best Practice Eigene GUI programmieren | MouseMotion Detection Allgemeine Java-Themen 3
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
J eigene Java Bibliothek Allgemeine Java-Themen 2
M Output einer anderen/externen .jar in eigene JTextArea Allgemeine Java-Themen 4
B Klassen Eigene Klasse als Array benutzen Allgemeine Java-Themen 3
D Eigene/r Collection/Container Allgemeine Java-Themen 3
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
H Best Practice Ideensuche: Flexibel hinzufügbare eigene Parser Allgemeine Java-Themen 6
T OOP Die eigene Bruchklasse Allgemeine Java-Themen 11
P Eigene Exception Klasse Allgemeine Java-Themen 7
J Java - Eigene DLL importieren Allgemeine Java-Themen 25
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S OOP Problembereichsmodell: Bestehende Framework Klasse in eigene Klassenstruktur einbinden Allgemeine Java-Themen 9
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
S Methoden Eigene Klasse als Rückgabewert Allgemeine Java-Themen 6
S eigene regEx schreiben Allgemeine Java-Themen 4
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
M Eigene Klasse verschlüsselt in Datei speichern Allgemeine Java-Themen 13
N Geodaten für eigene Routenplanung Allgemeine Java-Themen 5
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
C Eigene Sounddateien schreiben Allgemeine Java-Themen 12
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
M Eigene Factory Klasse Allgemeine Java-Themen 21
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
S eigene Update Funktion Allgemeine Java-Themen 5
H2SO3- getMethods(): eigene methoden rausfinden Allgemeine Java-Themen 4
C eine eigene Javadoc erstelen Allgemeine Java-Themen 3
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
S Eigene Bibliothek Allgemeine Java-Themen 2
M Eigene Dateiendung? Allgemeine Java-Themen 3
M Plugins für eigene Programme Allgemeine Java-Themen 3
S Eigene Events feuern Allgemeine Java-Themen 3
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
A Eigene Java Plugins entwickeln - wie optimal? Allgemeine Java-Themen 14
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
U Eigene "Dining Philosopher" Interpretation weckt Philos nie auf Allgemeine Java-Themen 2
0x7F800000 Wovon eigene Events für spezialisierte JComponents ableiten? Allgemeine Java-Themen 2
SuperSeppel13 Packete der Java Bibliothek ins eigene Prjekt integrieren Allgemeine Java-Themen 4
P Eigene Klasse kopieren die auf sich selbst refferenziert Allgemeine Java-Themen 8
G Umgebungsvariabeln auslesen (Path, Temp, oder eigene) Allgemeine Java-Themen 2
T Eigene PID ermitteln! Allgemeine Java-Themen 3
D Icon für eigene Dateiendung Allgemeine Java-Themen 7
G Eigene "Speicherverwaltung" Allgemeine Java-Themen 5
H eigene Annotations Allgemeine Java-Themen 2
S eigene Klasse die JButton extended - als Liste! Allgemeine Java-Themen 6
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
A Eigene Wrapper-Klassen Allgemeine Java-Themen 2
J Kann eigene Klasse nicht ermitteln Allgemeine Java-Themen 4
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
U eigene Datenstruktur ArrayList<String> nach Object [][ Allgemeine Java-Themen 2
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
B eigene Klassen verkaufen Allgemeine Java-Themen 2
W eigene event-Klasse, event posten Allgemeine Java-Themen 2
reibi Eigene exception mit feld "serialVersionUID" Allgemeine Java-Themen 3
M Eigene .jar in anderes Programm importieren[eclipse] Allgemeine Java-Themen 6
T Eigene Libary Allgemeine Java-Themen 6
E Eigene Exception Allgemeine Java-Themen 11
Q Bibliotheken mit ins eigene Jar aufnehmen Allgemeine Java-Themen 4
M Eigene Exception Klasse Allgemeine Java-Themen 4
M eigene Objekte vergleichen Allgemeine Java-Themen 6
K log4j - eigene Info-Ausgaben Allgemeine Java-Themen 5
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
G JWindow verschieben bei mousedragged auf eigene titelleiste Allgemeine Java-Themen 3
N Methoden in eigene Dateien auslagern? Allgemeine Java-Themen 10
B Eigene Datentypen Allgemeine Java-Themen 5
G Brauche hilfe bei JMF: Wie eigene Streaming Data Source! Allgemeine Java-Themen 4
G eigene klassen die ein jar verwenden als neues jar erstellen Allgemeine Java-Themen 4
O Externe Jars in eigene JAr packen in Eclipse Allgemeine Java-Themen 5
R Updateprozedur ü. Internet fürs eigene Programm? Allgemeine Java-Themen 24
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
R Eigene Konfigurationsdatei für größere Projekte. Allgemeine Java-Themen 4
J Eigene Callback Methode? Allgemeine Java-Themen 3
S eigene evetns erstellen Allgemeine Java-Themen 5
K eigene GUI Komponente wird nicht angezeigt Allgemeine Java-Themen 3
D Eigene Classes aus anderen .java-Dateien Allgemeine Java-Themen 2
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5
C Die Konsole ins eigene Programm einbauen Allgemeine Java-Themen 5
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben