Je travaille sur autonome sans tête RCP . Cela fonctionne sans problème lorsque j'exécute l'application et le produit dans Eclipse IDE, mais lorsque je l'exporte et que je l'exécute, j'ai eu cette erreur dans le fichier journal.
!ENTRY org.Eclipse.equinox.ds 4 0 2013-01-16 13:27:59.132
!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)
...
!ENTRY org.Eclipse.equinox.ds 4 0 2013-01-16 13:28:00.901
!MESSAGE [SCR] Exception while activating instance org.Eclipse.e4.ui.css.swt.internal.theme.ThemeEngineManager@6b8d6157 of component org.Eclipse.e4.ui.css.swt.theme
!STACK 0
Java.lang.NoClassDefFoundError: org/Eclipse/swt/widgets/Display
at Java.lang.Class.getDeclaredMethods0(Native Method)
at Java.lang.Class.privateGetDeclaredMethods(Class.Java:2442)
Si je me réfère à cet article , je comprends que j’ai une version plus récente d’un plug-in sans ses dépendances et que quelque chose ne va pas dans le chemin d’exécution. Cependant, je ne sais pas exactement ce qui pourrait causer cette erreur.
Quel est le problème? Pourquoi cette erreur ne survient-elle que lorsque je l'exécute en autonome?
J'ai un fichier build.properties
output.. = bin/
bin.includes = META-INF/,\
plugin.xml,\
.
source.. = src/
C'est le fichier MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Refactorer
Bundle-SymbolicName: edu.utexas.seal.refactorer;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: edu.utexas.seal.refactorer.Activator
Bundle-Vendor: PROSSEEK
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Require-Bundle: org.Eclipse.core.runtime;bundle-version="3.8.0",
org.Eclipse.jdt;bundle-version="3.8.0",
org.Eclipse.jdt.core;bundle-version="3.8.2",
org.Eclipse.core.resources;bundle-version="3.8.1",
org.Eclipse.text;bundle-version="3.5.200",
org.Eclipse.jdt.ui;bundle-version="3.8.1",
org.Eclipse.jdt.core.manipulation;bundle-version="1.5.0",
org.Eclipse.ltk.ui.refactoring;bundle-version="3.7.0",
org.Eclipse.jdt.core.manipulation;bundle-version="1.5.0",
org.Eclipse.ltk.core.refactoring;bundle-version="3.6.0",
org.Eclipse.jface.text;bundle-version="3.8.1",
org.Eclipse.core.expressions;bundle-version="3.4.401",
org.Eclipse.core.externaltools;bundle-version="1.0.100",
org.Eclipse.jface;bundle-version="3.8.101",
edu.utexas.seal.utilities;bundle-version="1.0.0",
org.Eclipse.core.filebuffers;bundle-version="3.5.200"
Bundle-ClassPath: .
Export-Package: edu.utexas.seal.refactorer
Je n'ai qu'un seul élément: "." dans Bundle-ClassPath.
J'ai d'abord recompilé le projet, puis vérifié que je disposais de tous les plug-ins requis à partir des réclamations du fichier journal, puis que je trouvais qu'il me manquait le org.Eclipse.equinox.util
. Je suppose qu'il aurait dû être inclus automatiquement. Après l'inclusion, certaines des erreurs ont disparu et j'ai constaté que j'avais deux autres erreurs.
J'ai configuré "l'environnement d'exécution" en tant que JavaSE-1.5, ce qui posait un problème, car Java ne pouvait pas reconnaître que @Override était à l'origine des erreurs "Doit se substituer à une méthode de superclasse".
J'ai eu un indice de ce site.
J'ai également dû changer le fichier /Eclipse/configuration/config.ini
.
osgi.bundles=org.Eclipse.equinox.common@2:start,org.Eclipse.update.configurator@3:
start,org.Eclipse.equinox.ds@3 <-- (From 2 to 3)
:start,org.Eclipse.core.runtime@start
Je ne sais pas si c'est un bug Eclipse ou non, j'ai eu un indice de ce site .
-consoleLog
était vraiment utile, car je n'avais pas à ouvrir le fichier journal tout le temps. Il est également possible d'ajouter le paquet manquant via une configuration de dépendance supplémentaire, directement au paquet défaillant:
<plugin>
<groupId>org.Eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
<dependency-resolution>
<extraRequirements>
<requirement>
<type>Eclipse-plugin</type>
<id>org.Eclipse.jface.text</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
Vous devez ajouter la même chose à votre fichier feature.xml. Une fois que vous avez ajouté la même chose, nettoyez le projet et essayez de le reconstruire. Je suis sûr que cela résoudra ce problème.