In my application I use the idea if middle data access layers. I implemented that through the set of different data access objects, which I named mediators. Each mediator is presented through the interface and implementing class, which are binded with the Tapestry IoC. But mediators are referencing each other interfaces in their classes. And this is where I get this exception when the one class is loaded by different classloaders. Here is the structure of that references: TeacherPage.tml calls the tMed.getActiveClients(), where the tMed is annotated with @Inject. This, first, inject is fine.
TeacherPage.tml: <html t:type="layout" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter"> <ul t:type="loop" t:source="tMed.activeClients" t:value="tClient"> <li> ${tClient.name} </li> </ul> </html> TeacherPage.java: public class TeacherPage { @Inject @Property private TeacherMed tMed; //TeacherMed is the Interface. TeacherMediator is the implementing class. @Property private Client tClient; } TeacherMediator.java: public class TeacherMediator implements TeacherMed { @Inject private CrudServiceDAO dao; @Inject private ClientMed clientMed; //ClientMed is the interface, and ClientMediator is the implementing class. public Teacher unit; public List<Client> getActiveClients() { return clientMed.filterByActiveTeacher(unit).getGroup(); } } And here, when clientMed is called, exception occurs: /java.lang.LinkageError loader constraint violation in interface itable initialization: when resolving method "tap.execounting.dal.mediators.ClientMediator.setGroup(Ljava/util/List;)Ltap/execounting/dal/mediators/ClientMediator;" the class loader (instance of org/apache/tapestry5/internal/plastic/PlasticClassLoader) of the current class, tap/execounting/dal/mediators/ClientMediator, and the class loader (instance of org/mortbay/jetty/webapp/WebAppClassLoader) for interface tap/execounting/dal/mediators/interfaces/ClientMed have different Class objects for the type ounting.dal.mediators.ClientMediator.setGroup(Ljava/util/List;)Ltap/execounting/dal/mediators/ClientMediator; used in the signature/ http://pastebin.com/kSvHbDqc Full stack. / http://pastebin.com/mWpC37Lw Tapestry report I checked/tried the following things: 1) Tried to move classes into different package. 2) Tried to annotate ClientMed as @Environmental. 3) Tried to run the project on the linux, on the mac, on the glassfish server (which works in another linux) 4) Tried to run with different JREs. 5) Checked the Inject annotation itself. It is correct. I still want to use IoC concept in that fashion. Is it right to use tapestry @Inject in such way? Or should I use other IoC container for the rest (not Pages and Components) of application? -- View this message in context: http://tapestry.1045711.n5.nabble.com/another-java-lang-LinkageError-loader-constraint-violation-in-interface-itable-initialization-tp5714993.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org