Écrit à l'Éclipse de la console
Mon plugin d'écrire à l'éclipse de la console pour objectif de test, j'ai simplifié mon code, de sorte que je n'ai que le suivant:
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
System.out.println("Tecomp Plugin is running");
MessageConsole myConsole = new MessageConsole("My Console", null);
//myConsole.activate();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[]{ myConsole });
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(myConsole);
final MessageConsoleStream stream = myConsole.newMessageStream();
stream.setActivateOnWrite(true);
stream.println("Hi there!");
stream.close();
}
C'est un simple plugin, la méthode démarrer belogs à la classe étendant AbstractUIPlugin - il pas une application rcp.
Le Code fonctionne très bien à l'intérieur de l'exécution workbench - une fois le plugin installé, la sortie est perdu quelque part. Le reste du plugin fonctionne correctement.
Est là peut-être un problème avec le ConsolePlugin? Ou sont des cours d'eau traitée différemment dans l'exécution workbench et le développement workbench?
J'ai essayé les deux - un projet de long métrage et en copiant directement le plugin jar du répertoire eclipse - pour l'installation du plugin - même résultat pour les deux...
Toute aide est la bienvenue, parce que je suis struggeling avec ce problème pour un certain temps maintenant...
Ce Qui Concerne, Kathi
Edit:
il ne semble pas être un problème de la Console... j'ai donné de mon propre point de vue pour l'impression de la sortie, mais bien que declard dans le plugin.xml il n'est pas tenu après l'installation du plugin... voici ce que j'ai fait:
-exporter le plugin avec le ExportWizard dans un pot-archive
-copié cette archive dans /usr/share/eclipse/plugins
-redémarrage d'eclipse
ou avec un projet de long métrage:
exporté de la fonction-projet contenant mon plugin avec le ExportWizard
-suppression de la ci-dessus jar archive à partir de l'éclipse dir
-installé la fonctionnalité
-redémarrage d'eclipse
les deux n'a pas de mot - ai-je quelque chose de mal avec l'installation du plugin?
Le pot-archive est ok, j'ai vérifié, c'est la version la plus récente. Mais de toute façon, il semble que l'éclipse est toujours de travailler avec certains anciens plugin sans les modifications que j'ai apportées
ce qui concerne, Kathi
Edit:
J'ai mis en place le IStartup Interface de fin de l'étendue de l'org.eclipse.l'interface utilisateur.point de départ, mais rien n'a changé... je pense vraiment qu'elle a un problème d'installation d'une certaine manière. J'ai commenté une partie de la sortie, mais c'est toujours imprimé sur la console de débogage.
Est-il une sorte de plugin de cache dans eclipse? Alors que le nouveau code n'a pas à le lire?
Edit:
Merci pour les suggestions, mais à partir d'eclipse avec l'option-clean n'a pas aidé - je vais essayer d'installer le plugin dans un autre environnement la semaine prochaine, peut-être il ya quelque chose de mal avec le mien...
Edit:
le code dans la classe de l'appel de la compilier se présente comme suit:
private MessageConsole findConsole(String name){
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
for (int i = 0; i<existing.length; i++){
if (name.equals(existing[i].getName())){
return (MessageConsole)existing[i];
}
}
//no console found -> create new one
MessageConsole newConsole = new MessageConsole(name, null);
conMan.addConsoles(new IConsole[]{newConsole});
return newConsole;
}
public void run() {
MessageConsole console = findConsole("tecompConsole");
//display the tecomp Console
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
String id = IConsoleConstants.ID_CONSOLE_VIEW;
try {
IConsoleView view = (IConsoleView) page.showView(id);
view.display(console);
} catch (PartInitException e) {
e.printStackTrace();
}
MessageConsoleStream output = console.newMessageStream();
String tecompPath = TecompPlugin.getDefault().getPreferenceStore().getString(IEiffelConstants.TECOMP_PATH);
if (checkTecompPath(tecompPath)){
String line;
String[] cmd = {tecompPath, pathToAceFile};
try{
output.println("calling tecomp");
Process tecomp = Runtime.getRuntime().exec(cmd);
//capture stdout und stderr from tecomp
BufferedReader input = new BufferedReader(
new InputStreamReader(tecomp.getInputStream()));
BufferedReader err = new BufferedReader(
new InputStreamReader(tecomp.getErrorStream()));
while ((line = input.readLine()) != null ){
output.println(line);
}
input.close();
while ((line = err.readLine()) != null){
output.println(line);
}
err.close();
output.close();
tecomp.waitFor();
//System.out.println(tecomp.exitValue());
}catch (Exception err){
err.printStackTrace();
}
} else {
try{
output.println("please specify a tecomp path");
output.close();
}catch (Exception err){}
}
}
mais le premier exemple de test devrait fonctionner, n'est-ce pas? J'ai créer un nouveau MessageConsoleStream et écrire manuellement. C'est exactement comme les exemples que j'ai trouvé.
Edit:
Le code n'est pas belog à un rcp de l'application - c'est juste un plugin, l'extension de l'ide eclipse avec le soutien de la eiffel langage de programmation. Donc je pense que votre suggestion ne fonctionne pas pour mon plugin - VonC, au moins, je ne sais pas où mettre votre code...
Mon premier exemple de code dans la question initiale est appelée à l'intérieur de la classe de Plugin extension AbstractUIPlugin au sein de la start(BundleContext contexte) de la méthode. Mon plugin en cours d'exécution, donc quelque part cette méthode est appelée. Et comme je l'ai mentionné - le plugin fonctionne très bien à l'intérieur de l'exécution workbench...
Je suis désolé si ce n'est pas le bon endroit pour une explication supplémentaire de ma question - mais il semblait être le seul endroit où le système me permet de poster quelques lignes. Commentaires pour vos réponses ne sont pas autorisés pour moi, car je viens de m'inscrire et pour qui je n'ai pas assez de points de réputation... alors, s'il vous plaît corrigez-moi, si je suis en utilisant le système de mal 🙂 thx
non, ma console ne s'affiche pas il y
OriginalL'auteur | 2009-04-06
Vous devez vous connecter pour publier un commentaire.
Avez-vous vérifier "l'Affichage de la console dans votre RCP application" ?
Serait la suivante de code (fait dans le
Application.java run()
avant de créer et de lancer le workbench) commencent à au moins comporter comme ce que vous voulez ?(I. e. un écran de la console elle-même lors de votre plugin est installé dans eclipse ?)
OriginalL'auteur VonC
Je pense que le problème est que votre plugin n'est pas en cours de démarrage. Le code vous montrer ne sera pas activé jusqu'à ce que certains autres plug-in tente d'accéder à quelque chose dans votre plugin. Il semble comme c'est le cas avec votre debug configuration de lancement, mais pas avec le contenu de la demande.
Vous pourriez essayer de mettre en œuvre les IStartup de l'interface, et l'utilisation de l'org.eclipse.l'interface utilisateur.démarrage de point d'extension dans votre plugin pour forcer l'initialisation dès que l'INTERFACE utilisateur est chargé. Cela devrait activer votre plugin et exécuter la console de code que vous avez.
Vous pouvez peut-être ajouter un peu de journalisation de l'instruction ou le point d'arrêt dans la méthode start() pour s'assurer qu'elle est invoquée sur votre application déployée?
OriginalL'auteur Mario Ortegón
Me semble que l'éclipse de l'application où vous essayez d'installer votre plugin dans pourraient ne pas avoir la org.eclipse.l'interface utilisateur.console installé le plugin que vous avez besoin d'un plugin de dépendance. Avez-vous vérifier que votre plugin a le bon plugin dépendances et qu'il est installé sans problème?
OriginalL'auteur lothar
Vous avez probablement pour effacer les données en mémoire cache utilisée par OSGI et l'éclipse de l'exécution. Vous pouvez le faire en ajoutant le
-clean
argument à eclipse de la ligne de commande.Voici les informations à partir du Plug-in Dev Guide:
Voir l'Éclipse options d'exécution pour plus d'informations.
Vous pouvez également vérifier en utilisant des sites de mise à jour. J'utilise régulièrement une mise à jour locale du site pour installer des plugins, tandis que les essais, comme il semble de moins en moins enclins à faire des erreurs. La FAQ Eclipse a un rapide article sur comment créer un site de mise à jour.
OriginalL'auteur gcastro
Une autre possibilité est donc que le plugin vous êtes installé est mis en cache dans l'installation. Vous pouvez lancer eclipse avec l'option-clean pour supprimer tous les plugins de mise en cache à partir de l'espace de travail
OriginalL'auteur Mario Ortegón