Compilateur C++ en JAVA

Fermé
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012 - 12 avril 2012 à 22:57
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012 - 16 avril 2012 à 15:48
Bonjour,
Dans mon application Java je évalue un programme C++ saisi par l'utilisateur dans un éditeur de texte, mais avant d'effectuer cette évaluation il faut le
compiler d'abord (je suis bloquée à ce stade) pour vérifier qu'il est exempt d'erreurs en faisant appel à un compilateur++(Borland C++ si possible).
Existe-t-il une fonction qui fait appel à ce Compilateur à partir d'une application Java? Et comment fait la compilation de code. ?
Merci d'avance,
A voir également:

2 réponses

KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
12 avril 2012 à 23:12
Tu peux utiliser n'importe quel commande système ou programme externe avec la classe Runtime et en particulier la méthode exec. Le gros hic, c'est que ces commandes seront différentes selon si tu travailles sous Linux, ou Windows...
Il "suffit" donc de faire appel au compilateur avec une commande en pensant à rediriger la sortie vers un fichier, que tu pourras ensuite traiter en Java.
0
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012
13 avril 2012 à 23:14
Merci ,
Pourrait être plus d'explications et donner des exemples, s'il vous plaît,
0
KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
14 avril 2012 à 10:49
Voici comment on pourrait faire une compilation d'un fichier Java en ligne de commandes. Dans ton cas bien sûr il faudra remplacer l'instruction javac par la commande de compilation C++ de ton choix :

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Test
{
	public static void main(String...args) throws IOException
	{
		File dir = new  File("C:\\Users\\KX\\workspace\\monprojet\\src");
		
		Process p = Runtime.getRuntime().exec("javac Test.java",null,dir);
		
		// Lecture du flux standard
		Scanner out = new Scanner(p.getInputStream());
		while (out.hasNextLine())
			System.out.println(out.nextLine());
		out.close();
		
		// Lecture du flux d'erreur
		Scanner err = new Scanner(p.getErrorStream());
		while (err.hasNextLine())
			System.err.println(err.nextLine());
		err.close();
	}
}

Remarque : en vérité si c'était de la compilation en Java qu'il fallait faire on n'aurait pas besoin de passer par les lignes de commandes, on pourrait directement coder ça en Java, mais ici ce n'est qu'un exemple.
0
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012
14 avril 2012 à 20:01
Merci pour votre aide mais quelle est la commande pour lancer le compilateur C++?
merci...
0
KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
14 avril 2012 à 20:12
Ça dépend de ton compilateur, par exemple avec GCC c'est "gcc fichierSource.c", mais toi tu veux utiliser Borland C++ il faut regarder la documentation, sans oublier qu'en général on peut rajouter des options et qu'il faudra les mettre aussi dans la commande...
0
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012
16 avril 2012 à 12:39
je remplace le le compilateur javac avec le compilateur de Borland c++ mais reste des erreurs.????
0
KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
16 avril 2012 à 12:52
Il va falloir être un peu plus précis sur ce que sont les erreurs... car le code que j'ai mis fonctionne, je l'avais testé ;-)
0
ROSA_INF Messages postés 18 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 7 juin 2012
16 avril 2012 à 13:40
voila le code:
package Test;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Test
{
public static void main(String...args) throws IOException
{
File dir = new File("D:\\Memoire\\DOc logiciel\\code source C++(classes)");

Process p = Runtime.getRuntime().exec("gcc exemple.ccp",null,dir);

// Lecture du flux standard
Scanner out = new Scanner(p.getInputStream());
while (out.hasNextLine())
System.out.println(out.nextLine());
out.close();

// Lecture du flux d'erreur
Scanner err = new Scanner(p.getErrorStream());
while (err.hasNextLine())
System.err.println(err.nextLine());
err.close();
}
}
après l'exécution :
gcc: error: exemple.ccp: No such file or directory
gcc: fatal error: no input files
compilation terminated.

je compris pas ?
0
KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
16 avril 2012 à 14:04
Là ce ne sont pas des erreurs liés au code Java, mais ce sont celles que l'on récupère lorsqu'on demande au compilateur gcc de s'exécuter. Ici il ne trouve pas le fichier exemple.ccp dans le répertoire D:\Memoire\DOc logiciel\code source C++(classes)
Il faut donc vérifier le nom du fichier, qui pourrait être : exemple.cpp (et non .ccp)
0