+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut Erreur : Missing Constraint: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0"

    Bonjour à tous et à toutes.

    J'utilise Ecplise Juno et je développe une application RCP de vérification cartographique.

    Afin d'ajouter une évolution j'ai besoin d'utiliser un jar externe (pour info arcobjects.jar) qui fait partie d'un logiciel (Arcmap) de cartographie.

    J'ai deux contraintes :
    1. Que cela fonctionne sous Eclipse en mode debug.
    2. Que cela fonctionne lorsque le produit est compilé et déployé.

    J'ai tenté d'utiliser le jar directement en l'ajoutant dans le classpath mais ça n'a pas fonctionné dans les deux cas...

    J'ai suivi ce tutoriel et j'ai modifié l'emplacement du .jar, non plus à la racine mais dans un répertoire lib/, puis j'ai modifié le projet en conséquence.
    J'ai ajouté les dépendances de mon application principale pour qu'elle charge ce plugin.

    J'ai finalement réussi à le faire fonctionner correctement sous Eclipse (en debug) mais lorsque je génère l'application et ses plugins (clic sur le fichier .product > Eclipse Product export wizard), il m'est impossible de lancer l'application ainsi générée.

    Génération :
    1) Ouvrir le fichier topobaseValidator.product.
    2) Dans l'onglet 'Overview' cliquez sur 'eclipse Product export wizard'.
    3) Configuration (ne pas modifier) = '/topobase.validator.gui.application/topobaseValidator.product'.
    4) Root Directory = 'TopobaseValidator'.
    5) Cocher 'Synchronize before exporting'.
    6) Directory = '${pathgenerateexec}'.
    7) Décocher 'Export source'.
    8) Décocher 'Generate metadata repository'.
    9) Cocher 'Allow for binary cycles in targer plateform'.
    10) Cliquez sur le bouton 'Finish' pour générer le programme principal.
    Voici le log généré :
    !SESSION 2012-12-20 11:13:05.156 -----------------------------------------------
    eclipse.buildId=unknown
    java.version=1.7.0_09
    java.vendor=Oracle Corporation
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_FR
    Command-line arguments: -os win32 -ws win32 -arch x86

    !ENTRY org.eclipse.equinox.ds 4 0 2012-12-20 11:13:06.250
    !MESSAGE FrameworkEvent ERROR
    !STACK 0
    org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.ds_1.4.0.v20120522-1841 [3]" could not be resolved. Reason: Missing Constraint: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0"
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

    !ENTRY org.eclipse.osgi 2 0 2012-12-20 11:13:08.234
    !MESSAGE The activator topobase.validator.gui.application.Activator for bundle topobase.validator.gui.application is invalid
    !STACK 0
    org.osgi.framework.BundleException: The activator topobase.validator.gui.application.Activator for bundle topobase.validator.gui.application is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:172)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:236)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    Caused by: java.lang.ClassNotFoundException: topobase.validator.gui.application.Activator
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:165)
    ... 23 more
    Root exception:
    java.lang.ClassNotFoundException: topobase.validator.gui.application.Activator
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:165)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:236)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)

    !ENTRY org.eclipse.osgi 4 0 2012-12-20 11:13:08.250
    !MESSAGE Application error
    !STACK 1
    org.eclipse.core.runtime.CoreException: Plug-in topobase.validator.gui.application was unable to load class topobase.validator.gui.application.Application.
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:176)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    Caused by: java.lang.ClassNotFoundException: topobase.validator.gui.application.Application
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    ... 15 more
    D'abord, je ne sais pas où il le trouve mais impossible de trouver org.eclipse.equinox.internal.util.event !
    J'ai tenté plein de choses, mais cette erreur revient toujours.

    J'ai peur qu'il s'agisse d'un bug Eclipse référencé ici et à pas mal d'autres endroits.

    Mon manifest du plugin arcgis :
    Code :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Arcgis
    Bundle-SymbolicName: topobase.validator.arcgis;singleton:=true
    Bundle-Version: 1.0.0
    Export-Package: com.esri.arcgis.analyst3d,
     com.esri.arcgis.animation,
     com.esri.arcgis.arcweb,
     com.esri.arcgis.beans.TOC,
     com.esri.arcgis.beans.globe,
     com.esri.arcgis.beans.map,
     com.esri.arcgis.beans.pagelayout,
     com.esri.arcgis.beans.scene,
     com.esri.arcgis.beans.symbology,
     com.esri.arcgis.beans.toolbar,
     com.esri.arcgis.beans.ui,
     com.esri.arcgis.carto,
     com.esri.arcgis.cartoUI,
     com.esri.arcgis.cartoxpriv,
     com.esri.arcgis.catalogUI,
     com.esri.arcgis.controls,
     com.esri.arcgis.datainterop,
     com.esri.arcgis.datasourcesGDB,
     com.esri.arcgis.datasourcesfile,
     com.esri.arcgis.datasourcesnetCDF,
     com.esri.arcgis.datasourcesoledb,
     com.esri.arcgis.datasourcesraster,
     com.esri.arcgis.display,
     com.esri.arcgis.framework,
     com.esri.arcgis.geoanalyst,
     com.esri.arcgis.geodatabase,
     com.esri.arcgis.geodatabasedistributed,
     com.esri.arcgis.geodatabaseextensions,
     com.esri.arcgis.geometry,
     com.esri.arcgis.geoprocessing,
     com.esri.arcgis.geoprocessing.gen,
     com.esri.arcgis.geoprocessing.gen.params,
     com.esri.arcgis.geoprocessing.tools.analysistools,
     com.esri.arcgis.geoprocessing.tools.analyst3dtools,
     com.esri.arcgis.geoprocessing.tools.cartographytools,
     com.esri.arcgis.geoprocessing.tools.conversiontools,
     com.esri.arcgis.geoprocessing.tools.coveragetools,
     com.esri.arcgis.geoprocessing.tools.datainteroperabilitytools,
     com.esri.arcgis.geoprocessing.tools.datamanagementtools,
     com.esri.arcgis.geoprocessing.tools.geocodingtools,
     com.esri.arcgis.geoprocessing.tools.geostatisticalanalysttools,
     com.esri.arcgis.geoprocessing.tools.linearreferencingtools,
     com.esri.arcgis.geoprocessing.tools.multidimensiontools,
     com.esri.arcgis.geoprocessing.tools.networkanalysttools,
     com.esri.arcgis.geoprocessing.tools.samples,
     com.esri.arcgis.geoprocessing.tools.schematicstools,
     com.esri.arcgis.geoprocessing.tools.servertools,
     com.esri.arcgis.geoprocessing.tools.spatialanalysttools,
     com.esri.arcgis.geoprocessing.tools.spatialstatisticstools,
     com.esri.arcgis.geoprocessing.tools.trackinganalysttools,
     com.esri.arcgis.geostatisticalanalyst,
     com.esri.arcgis.gisclient,
     com.esri.arcgis.globecore,
     com.esri.arcgis.interop,
     com.esri.arcgis.interop.annotations,
     com.esri.arcgis.interop.extn,
     com.esri.arcgis.interop.spi,
     com.esri.arcgis.location,
     com.esri.arcgis.maplex,
     com.esri.arcgis.networkanalysis,
     com.esri.arcgis.networkanalyst,
     com.esri.arcgis.output,
     com.esri.arcgis.schematic,
     com.esri.arcgis.server,
     com.esri.arcgis.spatialanalyst,
     com.esri.arcgis.support.ms.stdole,
     com.esri.arcgis.system,
     com.esri.arcgis.systemUI,
     com.esri.arcgis.trackinganalyst,
     com.esri.arcgis.util.dataset,
     com.esri.arcgis.util.security
    Bundle-RequiredExecutionEnvironment: JavaSE-1.7
    Bundle-ClassPath: lib/arcobjects.jar
    Bundle-ActivationPolicy: lazy
    Ou alors il y a un autre moyen d'utiliser un .jar dans une application RCP plutot que d'en faire un plugin ?
    Je signal aussi que je n'ai pas unzippé le jar lors de la création du plugin.

    J'ai tenté d'expliquer le mieux possible mais je peux vous donner d'autres fichiers de conf.

    Merci d'avance pour votre aide.

  2. #2
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    Voilà, j'en ai eu marre, j'ai téléchargé et réinstallé Eclipse Juno RCP...
    J'ai repris une ancienne version de mon projet qui fonctionne bien, j'ai recompilé... et ça ne fonctionne plus.

    J'ai testé avec un ancien zip d'Eclipse RCP Juno sur mon disque et là l'ancienne version fonctionne parfaitement !

    J'ai donc repris cette version d'Eclipse Juno et j'ai rechargé mon nouveau projet qui a un problème et je l'ai recompilé mais ça ne fonctionne toujours pas.
    Pourtant :
    -> J'ai supprimé le plugin wrapper autour des arcobjets.jar
    -> J'ai supprimé le code dépendant des arcobjets

    Et ça fait toujours pareil... C'est incompréhensible.

  3. #3
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2004
    Messages
    3 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 290
    Points : 16 867
    Points
    16 867
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire dont il nous faut prendre soin en l'alimentant soigneusement, par nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  4. #4
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    Merci pour ta réponse mais j'avais déjà bundlisé mon jar et j'ai fais beaucoup de tests sans succès. Il est possible que cela vienne de "quelque chose" qui s'est passé dans mon Eclipse puisque celui-ci n'est même plus capable de compiler correctement les versions précédentes qui avaient été étiqueté sous SVN.

    Donc, avant de comprendre pourquoi mon jar externe n'arrive pas à passer, LA question à se poser est "pourquoi les sources que je compilais encore il y a 10 jours ne compilent plus sous Eclipe RCP ?"
    -> J'ai fais une mise à jour... ok ça vient peut-être de là....
    -> J'ai repris une nouvelle version d'Eclipse fraichement téléchargé et ça ne fonctionne pas non plus.
    -> Seule une version 'zip' que j'avais sur mon poste est capable de recompiler les anciens sources...

    Eclipse va-t-il mettre des jars, des dépendances, des fichiers de configurations dans le répertoire java / dans document & Settings / ailleurs ?

    Il y a quelque chose qui s'est passé pour que plus rien ne fonctionne... Et je n'ai rien installé de nouveau !

    J'investigue et vous tient au courant si je trouve quelque chose.

  5. #5
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 688
    Points : 1 288
    Points
    1 288

    Par défaut

    Bonjour,

    Quelques petits trucs a savoir:

    * La notion de Target Platform: La target-platform represente ce que tu vas utiliser pour compiler tes plugins et exécuter ton application depuis Eclipse. Le genre de problèmes de compilation que tu as peut vouloir dire que ta target-platform est mauvaise et ne contient pas toutes les dépendances. Alors crée-toi une target platform (File > New > Other > Target definition), ajoute ce qui est nécessaire pour ton project, et clique sur "Set As Target Platform". La Target-Platform est aussi un élément clé si tu veux automatiser le build.

    * La notion de Lauch Configuration: Quand tu démarres un application depuis Eclipse, Eclipse te génère une "Lauch Configuration" qui définit les plugins a utiliser et compagnie. Ceci est un sous-ensemble de ta Target-Platform + tes projets PDE de ton workspace. Tu y accèdes par les "Debug > Debug Configuration". Tu as un bouton magique Validate qui permet d'identifier des problèmes et de les résoudre avant de lancer ton application.

    * Le bundle "org.eclipse.equinox.ds" est un bundle chiant. Si tu démarres ton produit (avec la launch configuration) en utilisant des features, ça devrait aller, sinon il faut penser à le cocher (dans la launch configuration) et à ajouter ses dépendances.

    Voila les 3 points d'entrée pour résoudre tes problèmes. Donc maintenant, détends-toi un peu, prends-toi un café et étudie l'un après l'autre paisiblement Tu verras alors la puissance et la simplicité d'Eclipse, souvent cachée derrière des UI de qualité moyenne et une doc essentiellement basée sur les forums et mailing-lists.
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  6. #6
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    Merci Mickael_Istria pour ta réponse...

    Bon, pour le problème que j'avais avec mon ancienne version qui ne fonctionnait plus, il fallait juste cliquer sur Add Required Plug-ins car du fait de la mise à jour d'éclipse un plugin supplémentaire était nécessaire (javax.xml), je l'ai expliqué ici.

    Ce projet (assez gros) n'a pas été développé par moi. C'était d'ailleurs tellement bien fait que personne ne savait le régénérer "from scratch", ils se contentaient de dézipper une ancienne version, remplacer le jar modifié pour tel ou tel fonctionnalité puis reziper le tout pour donner au client (les versions internes c'était l'anarchie)...

    J'ai tout compilé via ant (il y a un système de plugin mais aussi des plugins qui appellent de batch DOS qui exécutent des programmes JAVA et C#, c'est vraiment pas terrible au niveau architecture mais je ne vais pas tout refaire).

    Actuellement, via les scripts ant, tout se compile, je patch toutes les version des les fichiers (14 mises à jours) dans les fichiers BAT / dans le code java / dans le fichier product / les fichiers manifest / dans le splash screen (on peut dire qu'ils en ont mis partout des n° de versions), puis après compilation je lance batch + script vbs pour exécuter InnoIDE en ligne de commande, copier les fichiers dans une bonne architecture de répertoires et générer le kit d'installation... J'ai donc bien fait évolué le système de compilation, tout est automatique maintenant.

    Plusieurs points dans ce que tu écris :
    Lauch Configuration > C'est automatiquement généré par le fichier .product (Launch an Eclipse application in Debug mode) et en effet le bouton magique 'validate' me dit que tout est OK. De toute façon sous Eclipse ça fonctionne nickel, c'est lorsque je génère l'application via Exporting que le résultat ne permet pas de lancer l'application.

    Pour la notion de "Target Platform" je ne sais pas de quoi tu parles. Bon, j'ai regardé et il me propose le parent folder où j'ai tous mes plugins (lequel choisir ? Le principal qui contient le .product ?). Le Initialize the target definition with, il faut mettre nothing ?

    Après je creuserais peut-être l'automatisation du build... ça me permettrait (peut-être) d'éviter de demander à l'utilisateur lors de l'exécution du script ant d'exporter lui-même le produit ?
    Je ne sais pas ce que ce org.eclipse.equinox.ds vient faire dans mon projet ni ce que j'ai modifié pour qu'il devienne nécessaire... je ne sais même pas à quoi il sert, ce que je dois ajouter comme dépendence et où... enfin pas mal de points noir à creuser encore...

    En tout cas merci pour ce début de réponse.

  7. #7
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 688
    Points : 1 288
    Points
    1 288

    Par défaut

    Pour ce qui est d'automatiser le build, je te recommande de passer des que possible a Tycho. Tycho est une extension de Maven qui utilise OSGi et Eclipse p2 pour resoudre les dependances. Il est beaucoup plus proche de la logique de developpement et d'execution d'Eclipse que Ant, et du coup il est beaucoup plus facile a maintenir.
    Si en plus tu connais Maven, c'est vraiment tres simple et puissant.

    En fait ta target-platform ce sont tes dependances. Tu n'y mets pas tes plugins a toi, qui sont des projets dans ton workspace, mais tu y mets plutot tout les trucs org.eclipse.*.
    Dans l'ideal, tu utilises des repositories pour definir tes dependances depuis ta target-platform. C'est plus portable que tous les autres, qui sont bases sur le file-system.
    Un peu d'autopromo: A journey with Target Platforms

    Le org.eclipse.equinox.ds est nouveau avec Eclipse 4.x et les nouvelles version d'OSGi et Equinox. Si tu veux demarrer une appli sur 4.x, il faut qu'il soit la. C'est tout ce que tu as a savoir: Eclipse 4.x => ne pas oublier ds (et ses dependances) !
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  8. #8
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    J'ai créé un target dans le projet qui contient le .product.
    Puis j'ai ajouté tous les plugins pour voir... bon ça fait rien de plus...
    Je supprime tout histoire de n'ajouter que ce qui est nécessaire : résultat il a fait je ne sais quoi, tous mes plugins apparaissent en rouge....
    Exemple : import org.eclipse.ui.plugin.AbstractUIPlugin;
    import org.osgi.framework.BundleContext;
    apparaissent en rouge...

    J'ai tout remis (target / definition / add / features) du fichier .target et maintenant ça ne change plus rien tout est en rouge.... pfffffffffffff

    J'ai supprimé le fichier target, de toute façon il n'y a pas de plugin provenant d'ailleurs, tout est compilé par moi et livré en même temps...

    Mais plus rien de marche maintenant, c'est pire qu'avant.
    J'ai regardé tous les fichiers plugin.xml, manifest, etc et je ne vois aucune trace de changement pourtant plus rien ne compile maintenant...

    Une idée ?

    EDIT : J'ai détruit mon workspace et l'ai reconstruit, ça recompile...

  9. #9
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 688
    Points : 1 288
    Points
    1 288

    Par défaut

    Tes bundles A,B,C dépendent d'autres bundles 1,2,3. Eclipse utilise la target-platform pour aller chercher 1,2,3. Si ton .target ne contient pas l'un de ces bundles, alors les MANIFEST deviennent rouges en disant qu'il manque une dépendances, et les imports pour ce bundle ne marchent plus.

    Je ne sais pas trop ce que tu as mis dans ton .target, mais si c'est rouge, c'est qu'il n'y a pas ce qu'il faut. Quand tu dis "j'y ai mis le .product", ça veut dire quoi? En fait sais-tu de quoi tu veux dépendre? De quelle version d'Eclipse? De quels autres projets? Quand tu ajoutes des trucs a ton .target, il faut re-cliquer sur "Set As Target-Platform" pour que ça prenne tes changements en compte.

    Après si ça marche avec la target-platform par défaut (qui est ta version courante d'Eclipse), tant mieux. Tu n'as plus qu'a te soucier de ta Lauch Configuration.

    Niveau méthodologie, voici un conseil: arrête de tout détruire et recommencer en espérant que ça marche. Il y a un moment où espérer ne suffit plus pour développer des plugins, il te faut comprendre et savoir réparer un workspace cassé, savoir lire les messages d'erreurs, et trouver quelles sont les dépendances manquantes.
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  10. #10
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    Citation Envoyé par Mickael_Istria Voir le message
    Tes bundles A,B,C dépendent d'autres bundles 1,2,3. Eclipse utilise la target-platform pour aller chercher 1,2,3. Si ton .target ne contient pas l'un de ces bundles, alors les MANIFEST deviennent rouges en disant qu'il manque une dépendances, et les imports pour ce bundle ne marchent plus.

    Je ne sais pas trop ce que tu as mis dans ton .target, mais si c'est rouge, c'est qu'il n'y a pas ce qu'il faut. Quand tu dis "j'y ai mis le .product", ça veut dire quoi? En fait sais-tu de quoi tu veux dépendre? De quelle version d'Eclipse? De quels autres projets? Quand tu ajoutes des trucs a ton .target, il faut re-cliquer sur "Set As Target-Platform" pour que ça prenne tes changements en compte.

    Après si ça marche avec la target-platform par défaut (qui est ta version courante d'Eclipse), tant mieux. Tu n'as plus qu'a te soucier de ta Lauch Configuration.

    Niveau méthodologie, voici un conseil: arrête de tout détruire et recommencer en espérant que ça marche. Il y a un moment où espérer ne suffit plus pour développer des plugins, il te faut comprendre et savoir réparer un workspace cassé, savoir lire les messages d'erreurs, et trouver quelles sont les dépendances manquantes.
    Que te répondre ?
    mon .product dont je parle c'est le plugin principal (application), celui qui est lancé et qui génère un .exe qui charge tous les autres. j'ai modifié (dans l'onglet launching) les icônes pour avoir mon exécutable avec ses propres icônes qui ne ressemble pas à eclipse.
    J'ai dans l'onglet dependencies : 75 dépendances (dont 8 qui sont mes propres plugins et le le reste qui sont des org.eclipse.*, org.w3c.*, etc...)
    Ce n'est pas moi qui ai créé tout cela et hélas je n'ai pas eu de formation sur Eclipse RCP (et j'en aurais pas même si je le demande).

    Pour le fichier plugin.xml, j'ai ajouté dans l'onglet dependencies le fameux org.eclipse.equinox.ds en dernière (puis après en première) position.
    lorsque je double clic sur celui-ci je trouve le jar qui me pose problème : org.eclipse.equinox.internal.util.event.

    Après lorsque je recompile et que je lance j'ai : org.osgi.framework.BundleException: The activator topobase.validator.gui.application.Activator for bundle topobase.validator.gui.application is invalid
    Alors je tente d'ajouter org.osgi.framework et là, dans dependencies ça n'existe pas... ce choix ne m'est pas proposé.
    Oui, il y a un moment où espérer ne suffit plus, je suis assez d'accord avec toi ... je pense qu'il faut que j'arrête d'espérer...

    Merci pour ton aide en tout cas...

  11. #11
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse RCP
    Inscrit en
    juillet 2008
    Messages
    688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 688
    Points : 1 288
    Points
    1 288

    Par défaut

    Alors ta target platform n'est pas ton "plugin principal".
    Ta target-platform c'est org.eclipse.*, org.w3c.*, et tout ce qui n'est pas lié à ton produit.
    Dans ton workspace, tu es censé avoir tous les plugins de ton produit. Si la target-platform contient bien ce qu'il faut, les dépendances sont résolues et ça compile.

    Ton .product est en fait équivalent à une lauch configuration. C'est lui qui dit ce que contient ton product. Il doit alors contenir tous tes plugins (ou features) à toi + leurs dépendances.
    Il doit notamment contenir le org.eclipse.equinox.ds (si tu utilises Eclipse 4)

    Dans les plugin.xml et MANIFEST.MF, tu es censé mettre le strict minimum pour que ton plugin compile.

    org.eclipse.equinox.internal.util.event n'est pas un jar, mais un package. Le bundle qui fournit ce package est org.eclipse.equinox.util (qui doit aussi faire partie de ton product/lauch configuration).

    Pour ce qui est de l'Activator, il faut que tu regardes dans le log pourquoi il est invalide, et que tu essaies de fixer en conséquence. S'il est inutile, vire-le, la classe, et la référence dans le MANIFEST.MF du plugin.

    Il y a de très bons bouquins Eclipse, qui sont peut-être même plus efficace qu'une formation. Perso j'ai lu le "Contributing to Eclipse" qui m'a beaucoup aidé. Il y en a des plus récents qui peuvent faire l'affaire.
    Essaie aussi de commencer plus petit. Genre un plugin de Hello World, puis un .product qui démarre une application contenant ce plugin. Fais ça dans un autre workspace. Une fois que tu sais comment faire un .product qui contient 1 plugin à toi + ses dépendances, tu seras plus serein pour ton gros projet.
    Tu fais du JEE/Web/Mobile dans Eclipse? T'as essaye JBoss Tools ?
    Read my blog about Eclipse | Follow me on twitter

  12. #12
    Membre habitué

    Inscrit en
    février 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : février 2007
    Messages : 183
    Points : 119
    Points
    119

    Par défaut

    Bonjour et bonne année à tous.

    Me revoilà, bien reposé et plus calme...
    Le problème a été résolu.

    Beaucoup de fichiers ont été modifiés pour faire un plugin qui encapsule la librairie arcgis.

    Le problème ? Le fichier build.properties
    Ancien fichier qui ne fonctionnait pas (et donc qui avait été modifié par moi) après mes modifications de projets pour prendre en compte le plugin arcgis que j'avais fait :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    output.. = bin/
    bin.includes = plugin.xml,\
                   META-INF/,\
                   icons/,\
                   splash.bmp,\
                   plugin.properties,\
                   build.properties,\
                   DISPLAY/,\
                   bin/,\
                   xsl/,\
                   images/
    Fichier qui marche :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    output.. = bin/
    source.. = src/
    bin.includes = plugin.xml,\
                   META-INF/,\
                   .,\
                   icons/,\
                   splash.bmp,\
                   plugin.properties,\
                   build.properties,\
                   DISPLAY/,\
                   bin/,\
                   xsl/,\
                   images/
    Voilà, la ligne .,\ avait 'sauté' et donc le class loader ne savait plus où retrouver les fichiers jar !

    C'est tout con, je savais que c'était tout con (d'ailleurs je passe pour un con), mais il fallait trouver où !

    En tout cas je vous remercie tous, je passe le sujet en résolu.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •