Ma question est de savoir comment exécuter un fichier .class java dans un répertoire en utilisant la classe exec() ou la classe ProcessBuilder. Cela ne fonctionne que si le fichier .class se trouve dans le même répertoire (que le programme Java).Comment exécuter un fichier .class qui se trouve dans un autre répertoire
Répondre
Voulez-vous générer un processus entièrement nouveau? Ensuite, vous devez utiliser
Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"});
Si vous voulez quelque chose dans le même processus, vous pouvez créer une nouvelle ClassLoader qui sait comment charger votre fichier .class. Vous pouvez ensuite utiliser la réflexion pour obtenir l'objet de classe du classloader, et appeler sa méthode "main" ou quelque chose comme ça. Vous devrez utiliser la réflexion car la classe ne sera pas disponible dans le chargeur de classe par défaut.
J'ai omis certains arguments à l'exec, à savoir le -cp pour définir le classpath (si vous avez besoin de quoi que ce soit en plus du fichier de classe unique) –
Java n'est pas lancé de cette façon. Vous devez indiquer un chemin absolu vers le chemin d'accès aux classes, puis indiquer le nom de la classe qualifiée. Java ne fonctionne pas en fournissant le fichier de classe. –
Merci Marc, mise à jour de mon exemple –
Problème résolu Merci les gars pour vos réponses ... :)
Solution J'ai utilisé
chemin String = "D: \ work"; // Chemin d'exécution de mon programme
String program = "Test"; // Mon nom de programme
ProcessBuilder pb = nouveau ProcessBuilder ("java", "- classpath", chemin, programme);
Si jamais vous revenez sur le site, vous devriez accepter votre propre réponse. –
Avez-vous envisagé des alternatives plus simples que d'utiliser exec()? Par exemple. l'ajout de la classe au classpath et simplement l'importation/l'appel de la manière habituelle de Java? – BalusC