Un jar capable de se déplacer au runtime
Projet gus05 de développement Java :: Chantiers :: Chantiers techniques :: Traitement des données :: Intelligence artificielle :: Un petit virus en Java
Page 1 sur 1
Un jar capable de se déplacer au runtime
Je vais vous expliquer comment créer un jar capable de se déplacer au runtime.
Voici la marche à suivre :
Évidemment, si le fichier JAR d'origine est déjà situé à bon endroit, on ne fait rien.
Il faut aussi pour bien finir le travail, penser à faire supprimer le fichier d'origine par le nouveau fichier JAR.
Code pour l'étape 1:
Voici la marche à suivre :
- Localiser le fichier JAR d'origine
- Dupliquer ce fichier JAR dans le répertoire cible
- Lancer le nouveau JAR en passant en paramètre l'emplacement du fichier d'origine
- Terminer l'application
Évidemment, si le fichier JAR d'origine est déjà situé à bon endroit, on ne fait rien.
Il faut aussi pour bien finir le travail, penser à faire supprimer le fichier d'origine par le nouveau fichier JAR.
Code pour l'étape 1:
- Code:
private File findAppFile() throws Exception
{
return new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
}
- Code:
private void copyFile(File in, File out) throws IOException
{
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
FileChannel inputChannel = fis.getChannel();
FileChannel outputChannel = fos.getChannel();
outputChannel.transferFrom(inputChannel,0,in.length());
fis.close();
fos.close();
}
- Code:
private void launchJar(File jar, String args) throws Exception
{
if(!jar.exists()) throw new Exception("Jar file does not exist: "+jar);
String command = "java -jar "+p_(jar);
if(args!=null && !args.equals("")) command = command+" "+args;
Runtime.getRuntime().exec(command,null,jar.getParentFile());
}
private String p_(File f)
{return "\""+f.getAbsolutePath()+"\"";}
- Code:
System.exit(0);
- Code:
private void moveItself(File destDir) throws Exception
{
if(!destDir.exists()) destDir.mkdirs();
File appFile = findAppFile();
File destAppFile = new File(destDir,appFile.getName());
if(appFile.equals(destAppFile)) return;
if(destAppFile.exists()) destAppFile.delete();
String args = "relocator="+appFile;
copyFile(appFile,destAppFile);
launchJar(destAppFile,args);
System.exit(0);
}
Projet gus05 de développement Java :: Chantiers :: Chantiers techniques :: Traitement des données :: Intelligence artificielle :: Un petit virus en Java
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Mar 16 Sep - 12:01 par Gus
» Présentation du jeu Vindinium
Jeu 20 Fév - 15:32 par Gus
» Rechercher la cible la plus proche avec le "Breadth First Search"
Jeu 20 Fév - 13:06 par Gus
» Impression d'écran avec sélection de zone
Jeu 20 Fév - 12:12 par Gus
» Envoyer un mail par un compte Gmail
Jeu 25 Avr - 14:04 par Gus
» Streaming : comment télécharger les vidéos
Lun 4 Fév - 19:59 par Gus
» Synology : installer ipkg
Mar 22 Jan - 21:22 par Gus
» Trouver le type de lecteur avec JNA
Mer 9 Jan - 23:11 par Gus
» Adresse ip publique et adresse ip privée, Internet box et UPnP
Mer 9 Jan - 21:02 par Gus
» Accéder au numéro de série du lecteur par un script vb
Mer 9 Jan - 19:31 par Gus