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 :
- Que cela fonctionne sous Eclipse en mode debug.
- 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 :
Voici le log généré :Citation:
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.
D'abord, je ne sais pas où il le trouve mais impossible de trouver org.eclipse.equinox.internal.util.event !Citation:
!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
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 :
Ou alors il y a un autre moyen d'utiliser un .jar dans une application RCP plutot que d'en faire un plugin ?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
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.