IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Compiler du Java en Java


Sujet :

Java

Vue hybride

DrakeRoxas Compiler du Java en Java 08/05/2013, 19h30
ruscov Sans jdk c'est pas possible ;) 08/05/2013, 20h16
thelvin Sisi, il est tout à fait... 08/05/2013, 23h56
tchize_ accessoirement, javac est un... 09/05/2013, 00h23
DrakeRoxas EDIT2 : Cette petite phrase... 09/05/2013, 01h51
Flodelarab Une applet java qui compile... 09/05/2013, 00h23
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 42
    Par défaut Compiler du Java en Java
    Bonjour à tous !

    Avant tout je précise que j'ai fait des recherches, mais que je n'ai pas trouvé ce dont j'ai besoin : Une façon de compiler du java à partir d'un autre programme java.
    Ce qui fait que je ne trouve pas :
    Il faut que la compilation puisse se faire sur un pc qui n'as pas le jdk (d’ailleurs le ToolProvider.getSystemJavaCompiler() me renvois null ...). J'ai bien pensé à ajouter le javac.exe, mais pour un soucis d'exportabilité ça ne conviens pas non plus.

    Je pense qu'il me faudrait un compilateur écrit lui aussi en java mais je n'en trouve pas et je ne sais pas comment le faire ni si c'est réalisable ...
    Une idée ?

  2. #2
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Sans jdk c'est pas possible

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Sisi, il est tout à fait possible d'écrire son propre compilateur Java, si on a une équipe de 10 personnes très expérimentées et environ 2 ans devant soi.

    De manière moins cynique, si j'avais vraiment ce genre de besoin délirant je regarderais si je peux pas juste inclure une grosse partie de OpenJDK dans mon projet de sorte de ne pas avoir besoin de l'installer à part. Bien sûr c'est du GPL, donc le reste du programme doit en être aussi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    accessoirement, javac est un compilateur java écrit en java

    Blague à part "compiler du java sur une plateforme sans compilateur" c'est du n'importe quoi comme requis. D'abord pourquoi refuser qu'un jdk arrive? Ensuite pourquoi avoir besoin de compiler?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 42
    Par défaut
    EDIT2 :
    Citation Envoyé par tchize_ Voir le message
    accessoirement, javac est un compilateur java écrit en java
    Cette petite phrase m'as fait me demander ce qu'il y avais dans l'archive tools.jar, donc j'ai était voir dedans. Et effectivement, il y a le javac à l'intérieur ! J'ai testé, et après avoir supprimer plein de choses probablement inutiles, ça fonctionne en utilisant le tools.jar et non les executables. Du coups j'ai testé avec celui de solaris x86 (qui ne fait pas la même taille) sur mon windows 7 amd64 et ça a fonctionné aussi !
    Cette petite phrase m'a bien aidée, même si ce n'était apparemment pas le but xD

    Donc merci à tchize de m'avoir aidé à trouver la solution et voilà le code si quelqu'un désire faire la même chose que moi :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    	public static void compile(File src, File bin)
    	{
    		try
    		{
    			final File[] inSrc = src.listFiles();
     
    			String cmd = " -d \"" + bin + "\"";
    			for (File f : src.listFiles())
    				cmd += " \"" + src.getCanonicalPath() + "\\" + f.getName() + "\"";
     
    			cmd = "java -cp tools.jar com.sun.tools.javac.Main " + cmd;
    			runProcess(cmd);
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
     
    	private static void printLines(String name, InputStream ins, PrintStream out) throws Exception
    	{
    		String line = null;
    		BufferedReader in = new BufferedReader(new InputStreamReader(ins));
    		while ((line = in.readLine()) != null)
    		{
    			out.println(name + " " + line);
    		}
    	}
     
    	private static void runProcess(String command) throws Exception
    	{
    		Process pro = Runtime.getRuntime().exec(command);
    		printLines(command + " stdout:", pro.getInputStream(), System.out);
    		printLines(command + " stderr:", pro.getErrorStream(), System.err);
    		pro.waitFor();
    		System.out.println(command + " exitValue() " + pro.exitValue());
    	}
    Dans mon tools.jar il ne me reste que ces dossiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    com
        sun
            source (et tout ce qu il contiennait)
            tools
                javac (et tout ce qu il contiennait)
    META-INF (et tout ce qu il contiennait)

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Une applet java qui compile un virus au dernier moment pour ceux qui viennent sur le site internet, ça simplifierait grandement la capacité de nuisance envers ceux qui n'ont rien demandé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compiler du code source java en java
    Par djmad dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 14/04/2009, 11h53
  2. Réponses: 7
    Dernier message: 26/07/2007, 10h10
  3. Compiler du Java depuis java
    Par jeepnc dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2007, 12h30
  4. Compiler du code Java via Java
    Par sozie9372 dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 10h14
  5. [Débutant]Compilation d'un fichier .java
    Par adilou1981 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 15/04/2005, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo