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 :

Eclipse RCP : Unable to load class application


Sujet :

Eclipse Platform

  1. #1
    Membre habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut Eclipse RCP : Unable to load class application
    Bonjour à tous et à toutes.

    Comme d'habitude, lorsque je modifie lourdement le projet RCP de l'application que je développe et enrichie régulièrement : ça ne se lance plus et je sais que j'en ai pour 15 jours à trouve LA ligne qui merde !
    Donc cette fois-ci j'ai fais un portage du projet Eclipse 32 bits sous windows en 64 bits.

    • Passage de Eclipse Mars à Eclipse Photon.
    • Passage JRE 8 32 bits en JRE 10 64 bits
    • Compilation de toutes les dlls JNI utilisées en 64 bits.


    Et d'ailleurs j'ai été surpris, à par SWT pour lesque il faut un SWT_LIB, le reste s'est plutôt bien passé.
    Sauf que quand j'ouvre le fichier product et que je fais "Launch an Eclipse Application in Debug Mode", ça fonctionne bien, l'application démarre... enfin ça dépend, si je change des réglages il faut TOUJOURS détruire la précédente "debug configuration" parce que sinon ça ne veut rien dire, parfois ça fonctionne mais en régénérant ça ne fonctionne plus un fois la "debug configuration" supprimée, parfois c'est l'inverse...

    Passons, je suis dans un mode où là, ça fonctionne bien.
    Je déploie l'application dans un nouveau répertoire pour générer le kit d'installation qui fonctionne depuis près de 6 ans.
    Et là, une fois déployée, l'application ne démarre pas, j'ai ce log :
    !SESSION 2018-09-24 14:07:00.200 -----------------------------------------------
    eclipse.buildId=unknown
    java.version=10.0.2
    java.vendor=Oracle Corporation
    BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=fr_FR
    Command-line arguments: -os win32 -ws win32 -arch x86_64

    !ENTRY org.eclipse.osgi 4 0 2018-09-24 14:07:01.649
    !MESSAGE Application error
    !STACK 1
    org.eclipse.core.runtime.CoreException: Plug-in geo.validator.gui.application was unable to load class geo.validator.gui.application.Application.
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:197)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:179)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:931)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:60)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:656)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:592)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1498)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1471)
    Caused by: java.lang.ClassNotFoundException: geo.validator.gui.application.Application cannot be found by geo.validator.gui.application_1.1.11
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:508)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:419)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:411)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:609)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:177)
    ... 16 more
    Je ne sais pas où chercher, le log n'est pas spécialement précis. Il doit manquer quelque chose quelque part ?
    Peut-être les fragments AWT (je ne sais pas ce qu'est ce 'fragment' mais c'est marqué fragment), peut être autre chose.
    Une fois j'ai cherché 10 jours avant de m'apercevoir qu'il fallait ajouter une ligne dans un des fichiers.
    Et j'y comprend pas grand chose, je ne sais pas quelles sont les plugins nécessaires : ça se débrouille presque seul, j'ai dû en ajouter à la main pour que l'export du .product compile.

    Là comme ça, vous ne me donnerez pas de réponse, ce n'est pas assez précis. Je peux vous fournir quelques fichiers de confs mais après ? Je recherche plus une méthode, les trucs à examiner qui peuvent provoquer ce problème...

  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
    java.lang.ClassNotFoundException: geo.validator.gui.application.Application cannot be found by geo.validator.gui.application_1.1.11
    Ca c'est plutot clair. Cherche si un .class est bien genere pour Application, et une fois que tu auras vu que soit il manque soit il est au mauvais endroit, regarde dans ton build.properties si des fois il est pas manquant.
    PS: en general, on ajoute un .qualifier a la version du plugin, qui est remplace au build par un peu ce qu'on veut. Ca peut notamment aider a etre sur de ce qu'on manipule dans ce genre de cas.
    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 habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut
    Bonjour et merci pour cette réponse qui me fait avancer...

    Bon, j'ai examiné mon fichier build.properties et en effet il avait été modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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,\
                   templates/DISPLAY/,\
                   bin/,\
                   xsl/,\
                   images/
    La deuxième ligne était manquante (source.. =) je l'ai re-ajouté.
    J'ai régénéré et ça fait pareil.
    J'ai supprimé le répertoire bin/ puis régénéré avec le fichier .product. Résultat, le bin n'est pas régénéré. J'ai quitté éclipse, relancé et recommencé la procédure.
    Là j'ai bien mon bin de créé.

    J'ai ouvert le .jar généré et il n'y a pas de bin ???????????????
    J'ai ouvert le .jar de celui qui fonctionne, il y a le bin mais aussi geo..... en fait tout est en double...

    J'ai l'impression que c'est le bordel dans la conf mais là je touche du doigt ce qui ne va pas, si tu savais comme je te remercie !!
    Par contre je ne comprend toujours pas ce qui se passe ni pourquoi ça ne compile plus comme avant...

    J'ai zippé les 2 .jar de l'appliation : la version 1.1.11 qui fonctionne (ancienne en 32 bits) et la version 1.1.16 qui ne se lance pas.... Pas mal de trucs bizarres...


  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 Feneck91 Voir le message
    J'ai ouvert le .jar de celui qui fonctionne, il y a le bin mais aussi geo..... en fait tout est en double...
    En fait, le `source..` et le `output..` definissent ce qui est compile a la racine du jar. En gros, il faut le lire comme `source.[destination]` avec destination=., la racine du jar. C'est generalement suffisant, et du coup ca te cree le dossier geo et les classes a la racine. Dans ton bin.includes=, tu peux enlever le dossier bin/.
    Regarde peut-etre aussi si ton .classpath est en bon etat. Il arrive que le .classpath et le build.properties soient desynchronises, et que par exemple le .classpath mette les .class dans un dossier autre que le fameux bin/ defini dans output..
    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 habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut
    Mon .classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="src"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
    	<classpathentry kind="var" path="SWT_LIB" sourcepath="/SWT_SRC"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>
    Il y a bien output = bin... je ne comprend pas.

    Bon, je n'ai plus le bin/ mais dans le jar geo.xxxxx en fait je n'ai QUE l'arborescence et aucun .class, ça ne m'étonne pas qu'il ne trouve pas l'application...
    J'ai du rater quelque chose

    Dans la partie compilée, pourtant j'ai bien tous les .class dans bin (en dehors du jar) !!

    J'ai tenté de copier dans le .jar toute l'arbo compilée dans bin/ qui contient tous les .class => ça ne fonctionne pas mieux !

    Si je supprime bin/ dans bin.includes je n'ai que geo.xxxx mais sans les .class et si je le mets, dans bin j'ai geo.xxx et tous les .class mais il ne trouve pas !
    Grrrrrrr Au secours !!

    Si dans le jar (de l'application qui fonctionne) j'enlève le répertoire bin ça fonctionne bien, si je retire le répertoire geo c'est le même problème.
    J'ai donc un problème de compilation : le contenu de bin ne doit pas faire parti du jar mais par contre le répertoire geo (qui dans le cas qui ne fonctionne pas) qui ne contient aucun fichier .class devrait contenir les fichiers compilés.

  6. #6
    Membre habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut
    Bon ça avance mais sans comprendre vraiment ce qu'il se passe.
    Avec mon précédent "Eclipse Mars", il me générais un fichier jar de l'application avec :
    • bin/geo/validator/gui/application/plein de répertoires avec les .class
    • geo/validator/gui/application/plein de répertoires avec les .class (donc en doublons avec ce qu'il y a dans bin)


    Avec le nouvel "Eclipse Photon", il me générais un fichier jar de l'application avec :
    • bin/geo/validator/gui/application/plein de répertoires avec les .class
    • geo/validator/gui/application/plein de répertoires SANS aucun .class


    J'ai supprimé ce qu'il y a dans bin/ dans celui qui fonctionne et en fait il n'en a pas besoin, par contre à la racine geo/* il en a besoin, si je supprime ça ne se lance plus (même erreur que ce que j'ai actuellement).
    J'ai copié les options de l'un dans l'autre et franchement c'est tout pareil !!!! Hélas ça ne fait pas pareil, j'ai le répertoire geo/* qui n'a aucun .class et je ne sais pas pourquoi !

    Voilà le problème, générer ce qu'il y a dans src/ à la racine du jar avec les .class.
    Je suis dépité ou déséspéré, ça dépend...

  7. #7
    Membre habitué

    Inscrit en
    Février 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2007
    Messages : 250
    Points : 162
    Points
    162
    Par défaut
    Bon, finalement plein de warnings corrigés dans (entre autre) manifest.mf :
    Bundle-ActivationPolicy: lazy (au lieu de Eclipse-LazyStart: true).
    Ajout de : Bundle-RequiredExecutionEnvironment: JavaSE-1.8
    En 1.6 ça compile pas et en JavaSE-10 ça ne fonctionne pas il ne trouve pas un bundle 0.0.0 ????????????

    Enfin bon, en tordant le truc dans tous les sens au bout d'un moment c'est tombé en marche mais je ne sais pas pourquoi ni ce qui provoquait ça, Eclipse a ses raisons que la raison ignore...

    En tout cas merci pour ceux qui ont tenté de m'aider.

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

Discussions similaires

  1. [2.x] Unable to load class "Twig_Environment"
    Par coolanso dans le forum Symfony
    Réponses: 3
    Dernier message: 10/11/2013, 12h52
  2. Réponses: 2
    Dernier message: 05/04/2012, 14h06
  3. Réponses: 0
    Dernier message: 02/09/2011, 14h54
  4. Unable to load class for jsp
    Par Braillane dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 06/11/2009, 18h08
  5. [Custom Tags 1.2] [JBoss] "unable to load class handler."
    Par coyote999 dans le forum Taglibs
    Réponses: 5
    Dernier message: 23/01/2008, 22h27

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