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

Eclipse Platform Discussion :

Plugin et appel externe en ligne de commande


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut Plugin et appel externe en ligne de commande
    Bonjour,

    J'aimerais savoir s'il est possible de lancer, depuis l'invite de commande, des fonctionnalités développées dans un plugin Eclipse ?

    Lorsque j'essaie quelque chose de très basique, l'invite de commande m'affiche "aucun attribut manifest principal dans MonFichier.jar".

    Malgré mes recherches, je n'ai rien trouvé à ce sujet.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Bon, je tente une explication...

    Eclipse s'appuie sur OSGi pour faire la résolution de dépendances, et sur son framework de plug-ins pour gérer les extensions. Tu es donc dans un conteneur (un peu dans l'esprit d'un conteneur web, sauf que c'est pas web, et que ça mange des jars - les plug-ins Eclipse - au lieu de manger des wars ou des ears). Bref, tu ne peux pas lancer un plug-in Eclipse par un simple "java -jar", il faut que tu démarres le conteneur qui va avec.

    Ensuite, dans ce conteneur, le moyen le plus propre pour créer des applis (en UI ou en ligne de commande) consiste à ajouter ton application au point d'extension org.eclipse.core.runtime.applications. Tu implémentras une classe qui sera donc ton application en ligne de commande (en gros ça s'implémente un peu comme un main() ).
    Une fois cette appli développée et déclarée dans le plugin.xml comme extension à org.eclipse.core.runtime.extensions, il faut que le plug-in soit installé quelque part dans un Eclipse. Une fois installé, tu vas dans cet Eclipse, et là, tu tapes: "java -jar plugins/org.eclipse.equinox.launcher_*.jar -application com.foo.bar.applicationId [...arguments...]" avec com.foo.bar.applicationId qui est l'id que tu as donné à ton application dans l'extension que tu as ajoutée a org.eclipse.core.runtime.applications. Avec cette commande, ça va te démarrer OSGi, te démarrer le plug-in registry d'Eclipse, chercher l'application com.foo.bar.applicationId et la lancer. Cette application peut avoir de l'UI ou non, donc ça peut être un simple interpréteur de ligne de commande.

    Pour info, quand tu lances ton ./eclipse ou ton eclipse.exe, c'est grosso modo ce qui ce passe, il te lance derrière la ligne de commande et lance l'application "org.eclipse.ui.ide.workbench" qui est l'IDE.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  3. #3
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut
    Bon après avoir lu (et compris?) le post précédent j'ai réessayé avec une classe bidon.

    Voici ce que j'ai fais:

    1) J'ai ajouté dans les extension "org.eclipse.core.runtime.applications", je lui est donné l'ID : helloworld

    2) J'ai ensuite ajouté une application ainsi qu'un run avec une classe : "hellotest.Coucou"

    3) Dans cette classe j'y ai mis :
    Code : 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
    package hellotest;
     
    import org.eclipse.equinox.app.IApplication;
    import org.eclipse.equinox.app.IApplicationContext;
     
    public class Coucou implements IApplication {
     
    	@Override
    	public Object start(IApplicationContext context) throws Exception {
    		System.out.println("Hello world!");
    		return IApplication.EXIT_OK;
    	}
     
    	@Override
    	public void stop() {
    	}
     
    }
    Une fois là j'ai exporter le plugin (en .jar) dans le dossier dropins de Eclipse.

    Puis j'ai utilisé l'invit de commande pour lancer :
    "java -jar plugins/org.eclipse.equinox.launcher_*.jar -application hellotest"

    Et l'invit de commande de me répondre "Error: Unable to access jarfile plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20130521-0416.jar"

    Voila voila. Si une âme charitable peut m'aider je reste dans le coin

  4. #4
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Citation Envoyé par Zombee Voir le message
    Bon après avoir lu (et compris?) le post précédent j'ai réessayé avec une classe bidon.
    Vu ce que tu as fait, tu as l'air d'avoir compris.
    Par contre, il y a moyen que ton System.err ne marche pas car les logs sont generalement rediriges. Pour des tests comme ca, mieux vaut creer un fichier jetable avec la date comme nom. C'est plus visible.

    Et l'invit de commande de me répondre "Error: Unable to access jarfile plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20130521-0416.jar"
    C'est pas ce jar qu'il faut, c'est un jar du genre plugins/org.eclipse.equinox.launcher_1.3.0.v20121114-150939.jar (pas le win32.win32.x86_64)
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  5. #5
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut
    J'ai réessayé cette fois-ci avec le bon ...equinox.launcher et en effet une seconde erreur apparaît cette fois ci dans le fichier de log Ecllipse.

    Et malgré l'explication que tu donnes je ne comprend pas pourquoi il y a une erreur.

    Merci!

  6. #6
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut
    Rectification, l'erreur dont je parle était une erreur d'inattention.
    Donc je me retrouve avec un plug-in qui me dit Hello world! dans l'invit de commande.

    Maintenant lorsque j'essaie de rajouter sur ce même plug-in une extension sur le menu associé à une commande et que je le "Run as Eclipse application" je me retrouve avec une erreur du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.lang.IllegalStateException: BundleContext is no longer valid
    	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.checkValid(BundleContextImpl.java:931)
    	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeBundleListener(BundleContextImpl.java:303)
    	at org.eclipse.ui.plugin.AbstractUIPlugin$2.bundleChanged(AbstractUIPlugin.java:604)
    	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
    Je voudrais donc savoir s'il était possible de faire cohabiter dans le même plugin une fonction qui permet de se lancer en ligne de commande et une méthode permettant de se lancer depuis Eclipse.

    Merci

  7. #7
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Pas vraiment.
    Si tu veux que ton plugin marche en ligne de commande, il ne peut pas trop dependre des plugins d'UI (qui eux ont besoin d'une UI et en peuvent pas marcher en simple ligne de commande).
    Du coup, dans ce cas, tu es surement mieux de faire 2 plugins: un avec l'application en ligne de commande pour ton use-case "ligne de commande", et un autre qui depend de celui-ci et qui fait l'integration avec l'UI de l'IDE.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/04/2014, 12h58
  2. appelle SUA en ligne de commande
    Par vince2005 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 17/06/2009, 10h23
  3. Réponses: 1
    Dernier message: 15/05/2008, 14h29
  4. [Synthese vocale] Appeler eSpeak en ligne de commande
    Par Kintato dans le forum Multimédia
    Réponses: 14
    Dernier message: 25/07/2007, 17h07
  5. Appeler une URL avec & depuis une ligne de commande
    Par Fritzoune dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 13/02/2006, 14h52

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