Vous pouvez utiliser un URLClassLoader
pour charger la deuxième Jar à l'exécution. En fonction de vos besoins, vous pouvez avoir besoin d'une interface de pontage (une qui existe dans les deux Jars) que vous appelez de votre 'exe' pour faire fonctionner le deuxième Jar ... ou simplement utiliser le second Jar main
méthode;)
L'autre choix que vous avez est d'exécuter une autre machine virtuelle Java.
MISE À JOUR
Afin de séparer les deux éléments physiques de votre application. Vous avez un Jar enveloppé dans un EXE (aka launcher) et un autre Jar qui est votre application (aka l'application) (je suppose).
Donc. Votre lanceur ne devrait avoir absolument aucune idée de votre application (peu ou pas de dépendances de temps de compilation).
D'une certaine manière, nous devons charger dynamiquement l'application à partir du lanceur. Pour ce faire, nous avons besoin de quelques petites choses.
Nous devons être en mesure de charger l'application dans le contexte du chargeur de classe des lanceurs (afin que nous puissions le voir) et nous certains d'entre nous pour être en mesure de charger l'application.
Dynamic ClassLoading
Ceci peut être réalisé simplement par l'utilisation de URLClassLoader
URLClassLoader loader = new URLClassLoader(new URL[]{new File("path/to/your/jar/Application.jar").toURI().toURL()});
Chargement de l'application
Ceci peut être réalisé dans l'une des deux façons. Vous pouvez simplement utiliser le URLClassLoader
pour trouver un lancement des applications main
classe ...
// This is essentially the same as saying
// the.package.name.to.you.main.class.Main.main(new String[]{});
Class<?> mainClass = loader.loadClass("the.package.name.to.you.main.class.Main");
Method mainMethod = mainClass.getMethod("main", String[].class);
mainMethod.invoke(null, new String[]{});
Maintenant, si votre pot d'application ne dispose pas d'une méthode main
, vous pouvez utiliser l'exemple ci-dessus pour lancer à peu près toutes les classes vous voulez ...
Utilisez [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info) pour installer l'application. La mise à jour automatique est intégrée gratuitement et fonctionne sous Windows, OS X & * nix. –
J'ai regardé web-start. Je pense que quelque chose que je fais moi-même pourrait être plus proffesional. Je veux ma propre interface graphique pour le programme de mise à jour/lanceur. – Mad3ngineer
Ah. Typos. J'ajouterai cela dans toutes les questions que je pose à ce sujet. Je suis désolé de ne pas l'avoir compris, je ne pensais pas que cela faisait partie de la portée de la question. Je vais fournir plus d'informations à partir de maintenant. – Mad3ngineer