Hi everyone,
I have a problem with Guice 2.0's assisted injection feature in an
OSGi environment. I did a simple project which uses assisted injection
to produce Animals (Cats and Dogs) using an AnimalFactory interface.
The project works perfectly OK if it is a normal Java project (non-
OSGi). If I use the same code in an OSGi project, an exception is
thrown upon the project startup. Whenever I run it, the following
exception is thrown:
java.lang.IllegalAccessError: tried to access class
com.google.inject.assistedinject.FactoryProvider2 from class
$com.google.inject.assistedinject.FactoryProvider2$$FastClassByGuice$
$9dcdf6d7
at $com.google.inject.assistedinject.FactoryProvider2$
$FastClassByGuice$$9dcdf6d7.invoke(<generated>)
at
com.google.inject.internal.cglib.reflect.FastMethod.invoke(FastMethod.java:
53)
at com.google.inject.SingleMethodInjector
$1.invoke(SingleMethodInjector.java:59)
at
com.google.inject.SingleMethodInjector.inject(SingleMethodInjector.java:
91)
at
com.google.inject.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:
99)
at com.google.inject.MembersInjectorImpl
$1.call(MembersInjectorImpl.java:76)
at com.google.inject.MembersInjectorImpl
$1.call(MembersInjectorImpl.java:74)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:
804)
at
com.google.inject.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:
74)
at com.google.inject.Initializer
$InjectableReference.get(Initializer.java:145)
at com.google.inject.Initializer.injectAll(Initializer.java:92)
at
com.google.inject.InjectorBuilder.injectDynamically(InjectorBuilder.java:
171)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:113)
at com.google.inject.Guice.createInjector(Guice.java:92)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at
com.seeburger.guicetest.AnimalTest.testAnimalFactory(AnimalTest.java:
25)
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 junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:
83)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
at
org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:
62)
at
org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:
23)
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.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:
587)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
198)
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:
344)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
179)
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:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
It seems that OSGi doesn't like Guice or vice versa. Has anyone else
come across this issue?
Regards,
Martin
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.