2010-03-25 5 views
1

Je développe un plugin eclipse. Dans ce plugin j'utilise la réflexion pour exécuter une fonction dans une classe présente dans un autre projet qui est un projet d'hibernation. Chaque fois que l'invocation est utilisée, c'est mymethod.invoke (myobj);Impossible d'exécuter une fonction en utilisant la réflexion

il donne cette exception

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:599) 
    at packagesearch.DummyExecution.execution(DummyExecution.java:154) 
    at packagesearch.HelloWorldAction.run(HelloWorldAction.java:48) 
    at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251) 
    at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229) 
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583) 
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500) 
    at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) 
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) 
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422) 
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384) 
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348) 
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) 
    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:386) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:599) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212) 
Caused by: java.lang.NoClassDefFoundError: org.dom4j.DocumentException 
    at java.lang.J9VMInternals.verifyImpl(Native Method) 
    at java.lang.J9VMInternals.verify(J9VMInternals.java:72) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:134) 
    at test.Example.demo1(Example.java:38) 
    ... 36 more 
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:419) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:643) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:609) 
    ... 40 more 

quel est le problème exact. J'ai utilisé le chargeur pour charger la classe.Aide

Répondre

5

Cela signifie exactement ce qu'il dit, il n'a pas pu trouver la classe org.dom4j.DocumentException. Très probablement, votre chemin de classe est incorrect.

0

Je me demande si cela a quelque chose à voir avec Hibernate en utilisant des objets proxy pour représenter les entités persistantes. Donc, en substance, si vous avez coché le type de classe pour une entité x, vous pouvez obtenir quelque chose comme x_javassist_1334 car Hibernate enveloppe votre objet pour ajouter une fonctionnalité spécifique à la persistance. Je ferais une vérification simple et j'imprimerais le nom de la classe pour l'objet sur lequel vous appelez la méthode avant d'aller plus loin.

Questions connexes