On 9 December 2010 20:51, Andrei Pozolotin <[email protected]>wrote:

> People of Guice, hello;
>
> I am using this guice:
>
>                <dependency>
>                        <groupId>org.sonatype.sisu</groupId>
>                        <artifactId>sisu-guice</artifactId>
>                        <version>3.0-SNAPSHOT</version>
>                </dependency>
>                <dependency>
>                        <groupId>org.sonatype.sisu.inject</groupId>
>                        <artifactId>guice-assistedinject</artifactId>
>                        <version>3.0-SNAPSHOT</version>
>                </dependency>
>
> and I observe the following:
>
> when the code below runs as "app" then assited inject works as
> expected;
>
> but when the code is ran as "applet" (in eclipse applet viewer) then
> assisted inject fails with an exception;
>
> do you have any experience with this?
>

I can run the same example fine (also in Eclipse) with the same snapshots,
so it might just be a policy issue.
Are you just using right-click -> Run As Java Applet ? Do you have a custom
security policy for applet code?


> is it due to different classloaders?
> is it due different threads?
>
> thank you;
>
> Andrei
>
> ///////////////////////////////////////////
> // CODE:
> package test.assist;
>
> import javax.swing.JApplet;
>
> @SuppressWarnings("serial")
> public class AssistedApplet extends JApplet {
>
>        static void log(final String text) {
>                System.out.println(text);
>        }
>
>        public static void main(final String... args) {
>
>                log("run as app");
>
>                final AssistedApplet applet = new AssistedApplet();
>
>                applet.init();
>
>        }
>
>        @Override
>        public void init() {
>
>                log("run as applet");
>
>                final Injector injector = initInject();
>
>                final PaymentFactory factory = injector
>                                .getInstance(PaymentFactory.class);
>
>                final Payment one = factory.create("one");
>                log("one.process:" + one.process());
>
>                final Payment two = factory.create("two");
>                log("two.process:" + two.process());
>
>        }
>
>        Injector initInject() {
>
>                final Module module = new AbstractModule() {
>                        @Override
>                        protected void configure() {
>                                install(new
> FactoryModuleBuilder().implement(Payment.class,
>
>  PaymentImpl.class).build(PaymentFactory.class));
>                        }
>                };
>
>                final Injector injector = Guice.createInjector(module);
>
>                return injector;
>
>        }
> }
>
> interface Payment {
>        String process();
> }
>
> class PaymentImpl implements Payment {
>
>        private final String param;
>
>        @Inject
>        PaymentImpl(final Accounts accounts, final @Assisted String param) {
>                AssistedApplet.log("PaymentImpl:init:" + param);
>                this.param = param;
>        }
>
>        @Override
>        public String process() {
>                return param;
>        }
>
> }
>
> interface PaymentFactory {
>        Payment create(final String param);
> }
>
> @ImplementedBy(AccountsImpl.class)
> interface Accounts {
>        void validate();
> }
>
> @Singleton
> class AccountsImpl implements Accounts {
>
>        @Inject
>        AccountsImpl() {
>                AssistedApplet.log("AccountsImpl:init");
>        }
>
>        @Override
>        public void validate() {
>        }
>
> }
>
> ///////////////////////////////////////////
> //LOG AS APP:
> run as app
> run as applet
> AccountsImpl:init
> PaymentImpl:init:one
> one.process:one
> PaymentImpl:init:two
> two.process:two
>
> ///////////////////////////////////////////
> LOG AS APPLET
> Warning: Can't read AppletViewer properties file: /home/user1/.hotjava/
> properties Using defaults.
> run as applet
> com.google.inject.CreationException: Guice creation errors:
>
> 1) Error injecting method, java.lang.NoSuchMethodError:
> com.google.inject.binder.LinkedBindingBuilder.toConstructor(Ljava/lang/
> reflect/Constructor;Lcom/google/inject/TypeLiteral;)Lcom/google/inject/
> binder/ScopedBindingBuilder;
>  at
>
> com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:
> 538)
>  at com.google.inject.assistedinject.FactoryModuleBuilder
> $1.configure(FactoryModuleBuilder.java:315)
>
> 1 error
>        at
>
> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:
> 354)
>        at
> com.google.inject.InjectorBuilder.injectDynamically(InjectorBuilder.java:
> 173)
>        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 test.assist.AssistedApplet.initInject(AssistedApplet.java:60)
>        at test.assist.AssistedApplet.init(AssistedApplet.java:37)
>        at sun.applet.AppletPanel.run(AppletPanel.java:424)
>        at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.NoSuchMethodError:
> com.google.inject.binder.LinkedBindingBuilder.toConstructor(Ljava/lang/
> reflect/Constructor;Lcom/google/inject/TypeLiteral;)Lcom/google/inject/
> binder/ScopedBindingBuilder;
>        at
>
> com.google.inject.assistedinject.FactoryProvider2$2.configure(FactoryProvider2.java:
> 594)
>        at
> com.google.inject.AbstractModule.configure(AbstractModule.java:59)
>        at com.google.inject.spi.Elements
> $RecordingBinder.install(Elements.java:223)
>        at com.google.inject.spi.Elements.getElements(Elements.java:101)
>        at com.google.inject.InjectorShell$Builder.build(InjectorShell.java:
> 135)
>        at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:102)
>        at
> com.google.inject.InjectorImpl.createChildInjector(InjectorImpl.java:
> 144)
>        at
> com.google.inject.InjectorImpl.createChildInjector(InjectorImpl.java:
> 151)
>        at
>
> com.google.inject.assistedinject.FactoryProvider2.getBindingFromNewInjector(FactoryProvider2.java:
> 600)
>        at
>
> com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:
> 555)
>        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)
>        ... 8 more
>
> ///////////////////////////////////////////
>
> --
> 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]<google-guice%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>
>


-- 
Cheers, Stuart

-- 
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.

Reply via email to