You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Alessio Gambi <al...@gmail.com> on 2013/05/29 16:02:13 UTC

ClassCast Exception while loading Service using its interface

Hi list,

hope this question belongs here:

I use the Tapestry Registry for a non-web app to manage my dependencies, and the same code works differently on my MAC (where it runs fine) and on an Ubuntu VM (where it crashes, see the trace)

The code triggering the different behaviors is summarized here:


RegistryBuilder builder = new RegistryBuilder();
		builder.add(UtilsModule.class);
		builder.add(ExperimentAutomationAppModule.class);

		Registry registry = builder.build();
		registry.performRegistryStartup();

		// This is the code:

		SineTraceGenerator generator = (SineTraceGenerator) registry
				.getService("SineTraceGenerator", TraceGenerator.class);


The ExperimentAutomationAppModule builds the SineTraceGenerator as follows:

public static TraceGenerator buildSineTraceGenerator(Logger logger,
			@Value("${ecssim.trace-amplitude}") Double amplitude,
			@Value("${ecssim.trace-frequency}") Double frequency,
			@Value("${ecssim.trace-phaseShift}") Double phaseShift,
			@Value("${ecssim.trace-verticalShift}") Double verticalShift,
			@Value("${ecssim.clients-traceFile}") String traceFile) {

		return new SineTraceGenerator(amplitude, frequency, phaseShift,
				verticalShift, traceFile);
	}

The SineGeneratorClass is defined as:

public class SineTraceGenerator implements TraceGenerator 



Now, I clearly understand that Tapestry underneath uses its ClassLoading machinery, but it remains unclear why *and how to solve this* there is such a big difference (crash/not-crash) in the two cases.

I would like to use something like:

public static SineTraceGenerator buildSineTraceGenerator(...

And I cannot either do:

TraceGenerator generator = (SineTraceGenerator) registry
				.getService("SineTraceGenerator", TraceGenerator.class);

Would be the following a good design ? ... How knows !

public class SineTraceGenerator implements TraceGenerator, SinePattern

SinePattern pattern = registry
				.getService("SineTraceGenerator", SinePattern.class);
pattern.setFrequency( ... );
...

TraceGenerator generator = (SineTraceGenerator) registry
				.getService("SineTraceGenerator", TraceGenerator.class);
generator.generate();

Or should I need to define two services that are implemented by the same instance object ? This sounds quite dirty although...

Regards

-- Alessio


================= TRACE/LOG 

INFO  org.apache.tapestry5.ioc.RegistryBuilder: Adding module definition for class org.apache.tapestry5.ioc.services.TapestryIOCModule
INFO  org.apache.tapestry5.ioc.RegistryBuilder: Adding module definition for class org.gambi.utils.UtilsModule
INFO  org.apache.tapestry5.ioc.RegistryBuilder: Adding module definition for class org.gambi.experiments.ExperimentAutomationAppModule
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Eager loading services
DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Eager loading services [2.24 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Eager loading services
DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Eager loading services [0.18 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Eager loading services
DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Eager loading services [0.11 ms]
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.RegistryStartup: Creating proxy for service RegistryStartup
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Creating proxy for service RegistryStartup
DEBUG org.apache.tapestry5.ioc.Registry: [  2] --> Obtaining AspectDecorator service
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.AspectDecorator: Creating proxy for service AspectDecorator
DEBUG org.apache.tapestry5.ioc.Registry: [  3] --> Creating proxy for service AspectDecorator
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.PlasticProxyFactory: Loading class $AspectDecorator_28566c0cafeaa:
// class version 49.0 (49)
// access flags 0x1
public class $AspectDecorator_28566c0cafeaa implements org/apache/tapestry5/ioc/services/AspectDecorator java/io/Serializable  {


 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/ObjectCreator; creator

 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken; token

 // access flags 0x1
 public build(Ljava/lang/Class;Ljava/lang/Object;Lorg/apache/tapestry5/ioc/MethodAdvice;Ljava/lang/String;)Ljava/lang/Object;
   ALOAD 0
   INVOKESPECIAL $AspectDecorator_28566c0cafeaa.delegate ()Lorg/apache/tapestry5/ioc/services/AspectDecorator;
   ALOAD 1
   ALOAD 2
   ALOAD 3
   ALOAD 4
   INVOKEINTERFACE org/apache/tapestry5/ioc/services/AspectDecorator.build (Ljava/lang/Class;Ljava/lang/Object;Lorg/apache/tapestry5/ioc/MethodAdvice;Ljava/lang/String;)Ljava/lang/Object;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public createBuilder(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Lorg/apache/tapestry5/ioc/services/AspectInterceptorBuilder;
   ALOAD 0
   INVOKESPECIAL $AspectDecorator_28566c0cafeaa.delegate ()Lorg/apache/tapestry5/ioc/services/AspectDecorator;
   ALOAD 1
   ALOAD 2
   ALOAD 3
   INVOKEINTERFACE org/apache/tapestry5/ioc/services/AspectDecorator.createBuilder (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Lorg/apache/tapestry5/ioc/services/AspectInterceptorBuilder;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public createBuilder(Ljava/lang/Class;Ljava/lang/Object;Lorg/apache/tapestry5/ioc/AnnotationAccess;Ljava/lang/String;)Lorg/apache/tapestry5/ioc/services/AspectInterceptorBuilder;
   ALOAD 0
   INVOKESPECIAL $AspectDecorator_28566c0cafeaa.delegate ()Lorg/apache/tapestry5/ioc/services/AspectDecorator;
   ALOAD 1
   ALOAD 2
   ALOAD 3
   ALOAD 4
   INVOKEINTERFACE org/apache/tapestry5/ioc/services/AspectDecorator.createBuilder (Ljava/lang/Class;Ljava/lang/Object;Lorg/apache/tapestry5/ioc/AnnotationAccess;Ljava/lang/String;)Lorg/apache/tapest
ry5/ioc/services/AspectInterceptorBuilder;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_creator(Lorg/apache/tapestry5/ioc/ObjectCreator;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field creator of class $AspectDecorator_28566c0cafeaa is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_token(Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field token of class $AspectDecorator_28566c0cafeaa is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private delegate()Lorg/apache/tapestry5/ioc/services/AspectDecorator;
   ALOAD 0
   GETFIELD $AspectDecorator_28566c0cafeaa.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   INVOKEINTERFACE org/apache/tapestry5/ioc/ObjectCreator.createObject ()Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/services/AspectDecorator
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private writeReplace()Ljava/lang/Object; throws java/io/ObjectStreamException
   ALOAD 0
   GETFIELD $AspectDecorator_28566c0cafeaa.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public toString()Ljava/lang/String;
   LDC "<Proxy for AspectDecorator(org.apache.tapestry5.ioc.services.AspectDecorator)>"
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
   ALOAD 0
   INVOKESPECIAL java/lang/Object.<init> ()V
   ALOAD 0
   ALOAD 1
   ICONST_0
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/ObjectCreator
   PUTFIELD $AspectDecorator_28566c0cafeaa.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   ALOAD 0
   ALOAD 1
   ICONST_1
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/internal/ServiceProxyToken
   PUTFIELD $AspectDecorator_28566c0cafeaa.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0
}

DEBUG org.apache.tapestry5.ioc.Registry: [  3] <-- Creating proxy for service AspectDecorator [49.05 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  2] <-- Obtaining AspectDecorator service [49.98 ms]
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.PlasticProxyFactory: Loading class $Runnable_28566c0cafeab:
// class version 49.0 (49)
// access flags 0x1
public class $Runnable_28566c0cafeab implements java/lang/Runnable java/io/Serializable  {


 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/ObjectCreator; creator

 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken; token

 // access flags 0x1
 public run()V
   ALOAD 0
   INVOKESPECIAL $Runnable_28566c0cafeab.delegate ()Ljava/lang/Runnable;
   INVOKEINTERFACE java/lang/Runnable.run ()V
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_creator(Lorg/apache/tapestry5/ioc/ObjectCreator;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field creator of class $Runnable_28566c0cafeab is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_token(Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field token of class $Runnable_28566c0cafeab is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private delegate()Ljava/lang/Runnable;
   ALOAD 0
   GETFIELD $Runnable_28566c0cafeab.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   INVOKEINTERFACE org/apache/tapestry5/ioc/ObjectCreator.createObject ()Ljava/lang/Object;
   CHECKCAST java/lang/Runnable
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private writeReplace()Ljava/lang/Object; throws java/io/ObjectStreamException
   ALOAD 0
   GETFIELD $Runnable_28566c0cafeab.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public toString()Ljava/lang/String;
   LDC "<Proxy for RegistryStartup(java.lang.Runnable)>"
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
   ALOAD 0
   INVOKESPECIAL java/lang/Object.<init> ()V
   ALOAD 0
   ALOAD 1
   ICONST_0
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/ObjectCreator
   PUTFIELD $Runnable_28566c0cafeab.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   ALOAD 0
   ALOAD 1
   ICONST_1
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/internal/ServiceProxyToken
   PUTFIELD $Runnable_28566c0cafeab.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0
}

DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Creating proxy for service RegistryStartup [87.90 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Realizing service RegistryStartup
DEBUG org.apache.tapestry5.ioc.Registry: [  2] --> Instantiating service RegistryStartup implementation via org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at RegistryStartup
.java:36) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49)
DEBUG org.apache.tapestry5.ioc.Registry: [  3] --> Creating plan to instantiate org.apache.tapestry5.ioc.internal.services.RegistryStartup via public org.apache.tapestry5.ioc.internal.services.Registr
yStartup(org.slf4j.Logger,java.util.List)
DEBUG org.apache.tapestry5.ioc.Registry: [  4] --> Determining injection value for parameter #1 (org.slf4j.Logger)
DEBUG org.apache.tapestry5.ioc.Registry: [  4] <-- Determining injection value for parameter #1 (org.slf4j.Logger) [1.49 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  4] --> Determining injection value for parameter #2 (java.util.List)
DEBUG org.apache.tapestry5.ioc.Registry: [  5] --> Collecting ordered configuration for service RegistryStartup
DEBUG org.apache.tapestry5.ioc.Registry: [  5] <-- Collecting ordered configuration for service RegistryStartup [3.48 ms]
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.RegistryStartup: Constructed configuration: []
DEBUG org.apache.tapestry5.ioc.Registry: [  4] <-- Determining injection value for parameter #2 (java.util.List) [13.56 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  3] <-- Creating plan to instantiate org.apache.tapestry5.ioc.internal.services.RegistryStartup via public org.apache.tapestry5.ioc.internal.services.Registr
yStartup(org.slf4j.Logger,java.util.List) [17.91 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  3] --> Invoking constructor org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at RegistryStartup.java:36) via org.apache.tapestry5.i
oc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) (for service 'RegistryStartup')
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.RegistryStartup: Invoking constructor org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at RegistryStartup.java:36) vi
a org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) (for service 'RegistryStartup')
DEBUG org.apache.tapestry5.ioc.Registry: [  3] <-- Invoking constructor org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at RegistryStartup.java:36) via org.apache.tapestry5.i
oc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) (for service 'RegistryStartup') [0.36 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  2] <-- Instantiating service RegistryStartup implementation via org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List) (at RegistryStartup
.java:36) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) [20.71 ms]
DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Realizing service RegistryStartup [21.27 ms]
DEBUG org.gambi.experiments.ExperimentAutomationAppModule.SineTraceGenerator: Creating proxy for service SineTraceGenerator
DEBUG org.apache.tapestry5.ioc.Registry: [  1] --> Creating proxy for service SineTraceGenerator
DEBUG org.apache.tapestry5.ioc.Registry: [  2] --> Obtaining AspectDecorator service
DEBUG org.apache.tapestry5.ioc.Registry: [  2] <-- Obtaining AspectDecorator service [0.37 ms]
DEBUG org.apache.tapestry5.ioc.services.TapestryIOCModule.PlasticProxyFactory: Loading class $TraceGenerator_28566c0cafeac:
// class version 49.0 (49)
// access flags 0x1
public class $TraceGenerator_28566c0cafeac implements org/gambi/experiments/services/TraceGenerator java/io/Serializable {


 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/ObjectCreator; creator

 // access flags 0x12
 private final Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken; token

 // access flags 0x1
 public generateTrace(J)V
   ALOAD 0
   INVOKESPECIAL $TraceGenerator_28566c0cafeac.delegate ()Lorg/gambi/experiments/services/TraceGenerator;
   LLOAD 1
   INVOKEINTERFACE org/gambi/experiments/services/TraceGenerator.generateTrace (J)V
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public generateTrace(JJ)V
   ALOAD 0
   INVOKESPECIAL $TraceGenerator_28566c0cafeac.delegate ()Lorg/gambi/experiments/services/TraceGenerator;
   LLOAD 1
   LLOAD 3
   INVOKEINTERFACE org/gambi/experiments/services/TraceGenerator.generateTrace (JJ)V
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public generateTrace(JLjava/lang/String;)V
   ALOAD 0
   INVOKESPECIAL $TraceGenerator_28566c0cafeac.delegate ()Lorg/gambi/experiments/services/TraceGenerator;
   LLOAD 1
   ALOAD 3
   INVOKEINTERFACE org/gambi/experiments/services/TraceGenerator.generateTrace (JLjava/lang/String;)V
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public generateTrace(JJLjava/lang/String;)V
   ALOAD 0
   INVOKESPECIAL $TraceGenerator_28566c0cafeac.delegate ()Lorg/gambi/experiments/services/TraceGenerator;
   LLOAD 1
   LLOAD 3
   ALOAD 5
   INVOKEINTERFACE org/gambi/experiments/services/TraceGenerator.generateTrace (JJLjava/lang/String;)V
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public generateTraceAsMap(J)Ljava/util/Map;
   ALOAD 0
   INVOKESPECIAL $TraceGenerator_28566c0cafeac.delegate ()Lorg/gambi/experiments/services/TraceGenerator;
   LLOAD 1
   INVOKEINTERFACE org/gambi/experiments/services/TraceGenerator.generateTraceAsMap (J)Ljava/util/Map;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_creator(Lorg/apache/tapestry5/ioc/ObjectCreator;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field creator of class $TraceGenerator_28566c0cafeac is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1010
 final reject_field_change_token(Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;)V
   NEW java/lang/IllegalStateException
   DUP
   LDC "Field token of class $TraceGenerator_28566c0cafeac is read-only."
   INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
   ATHROW
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private delegate()Lorg/gambi/experiments/services/TraceGenerator;
   ALOAD 0
   GETFIELD $TraceGenerator_28566c0cafeac.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   INVOKEINTERFACE org/apache/tapestry5/ioc/ObjectCreator.createObject ()Ljava/lang/Object;
   CHECKCAST org/gambi/experiments/services/TraceGenerator
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x2
 private writeReplace()Ljava/lang/Object; throws java/io/ObjectStreamException
   ALOAD 0
   GETFIELD $TraceGenerator_28566c0cafeac.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public toString()Ljava/lang/String;
   LDC "<Proxy for SineTraceGenerator(org.gambi.experiments.services.TraceGenerator)>"
   ARETURN
   MAXSTACK = 0
   MAXLOCALS = 0

 // access flags 0x1
 public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
   ALOAD 0
   INVOKESPECIAL java/lang/Object.<init> ()V
   ALOAD 0
   ALOAD 1
   ICONST_0
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/ObjectCreator
   PUTFIELD $TraceGenerator_28566c0cafeac.creator : Lorg/apache/tapestry5/ioc/ObjectCreator;
   ALOAD 0
   ALOAD 1
   ICONST_1
   INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
   CHECKCAST org/apache/tapestry5/ioc/internal/ServiceProxyToken
   PUTFIELD $TraceGenerator_28566c0cafeac.token : Lorg/apache/tapestry5/ioc/internal/ServiceProxyToken;
   RETURN
   MAXSTACK = 0
   MAXLOCALS = 0
}

DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Creating proxy for service SineTraceGenerator [6.48 ms]
Exception in thread "main" java.lang.ClassCastException: $TraceGenerator_28566c0cafeac cannot be cast to org.gambi.experiments.services.impl.SineTraceGenerator
   at org.gambi.experiments.ExperimentAutomation.main(ExperimentAutomation.java:50) 

Re: ClassCast Exception while loading Service using its interface

Posted by Ulrich Stärk <ul...@spielviel.de>.
On 29.05.2013 16:02, Alessio Gambi wrote:
> TraceGenerator generator = (SineTraceGenerator) registry
> 				.getService("SineTraceGenerator", TraceGenerator.class);


> DEBUG org.apache.tapestry5.ioc.Registry: [  1] <-- Creating proxy for service SineTraceGenerator [6.48 ms]
> Exception in thread "main" java.lang.ClassCastException: $TraceGenerator_28566c0cafeac cannot be cast to org.gambi.experiments.services.impl.SineTraceGenerator
>    at org.gambi.experiments.ExperimentAutomation.main(ExperimentAutomation.java:50) 

Omit the cast to (SineTraceGenerator).

Uli

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org