Hi Josh, The problem here is that your binding.xml doesn't just reference the binding defined for Person in person-binding.xml - it creates a new binding for Person, in the form of the embedded <structure type="com.mycompany.apsp.crossjardepend.Person">. To use the precompiled binding version, change this to <structure type="com.mycompany.apsp.crossjardepend.Person" map-as="tns1:person"/>, where tns1 is defined as "http://accenture.com/apsp/crossjardepend".
- Dennis Josh L wrote: > Hello, > Hopefully someone can help me with an error I'm struggling with while trying > to use precompiled bindings. I'm trying to create a simple prototype where I > have a compiled binding/class in a jar file that is used as a dependency of > another project containing a binding and a class which extends a class > contained in the jar file. The jar contains a class Person, and the > jibx_bindingfactory compiled class that goes with it. The dependant project > contains a class Customer that extends Person, and binding.xml and > person-binding.xml mapping files. > > Im getting the error below when I try to run a build shared library/compile > bindings task: > > [java] java.lang.IllegalStateException: Internal error - cannot modify class > com.accenture.apsp.crossjardepend.Person loaded from D:\Projects\APSP_int > egration\CrossJarDependency\lib\person-shared.jar > [java] at > org.jibx.binding.classes.ClassFile.getClassGen(ClassFile.java:1283) > [java] at > org.jibx.binding.classes.ClassFile.getInstructionBuilder(ClassFile.java:1308) > [java] at > org.jibx.binding.classes.MethodBuilder.<init>(MethodBuilder.java:168) > [java] at > org.jibx.binding.classes.ExceptionMethodBuilder.<init>(ExceptionMethodBuilder.java:59) > [java] at > org.jibx.binding.classes.BoundClass.getStoreMethod(BoundClass.java:237) > [java] at > org.jibx.binding.def.PropertyDefinition.genStore(PropertyDefinition.java:699) > [java] at > org.jibx.binding.def.ValueChild.genUnmarshal(ValueChild.java:593) > [java] at > org.jibx.binding.def.ValueChild.genContentUnmarshal(ValueChild.java:885) > [java] at > org.jibx.binding.def.NestedStructure.genContentUnmarshal(NestedStructure.java:215) > [java] at > org.jibx.binding.def.ObjectBinding.genUnmarshalContentMethod(ObjectBinding.java:882) > [java] at > org.jibx.binding.def.ObjectBinding.genContentUnmarshal(ObjectBinding.java:1078) > [java] at > org.jibx.binding.def.ComponentProperty.genContentUnmarshal(ComponentProperty.java:299) > [java] at > org.jibx.binding.def.NestedStructure.genContentUnmarshal(NestedStructure.java:215) > [java] at > org.jibx.binding.def.ObjectBinding.genUnmarshalContentMethod(ObjectBinding.java:882) > [java] at > org.jibx.binding.def.ObjectBinding.genContentUnmarshal(ObjectBinding.java:1078) > [java] at > org.jibx.binding.def.MappingDefinition.generateUnmarshalImplementation(MappingDefinition.java:642) > [java] at > org.jibx.binding.def.MappingDefinition.generateCode(MappingDefinition.java:850) > [java] at > org.jibx.binding.def.DefinitionContext.generateCode(DefinitionContext.java:620) > [java] at > org.jibx.binding.def.BindingDefinition.generateCode(BindingDefinition.java:986) > [java] at org.jibx.binding.Compile.compile(Compile.java:221) > [java] at org.jibx.binding.Compile.main(Compile.java:374) > > My ant task is as follows: > > <target name="build-shared"> > <delete quiet="true" dir="${basedir}/bin" /> > <mkdir dir="${basedir}/bin" /> > <echo message="Compiling shared classes" /> > <javac srcdir="${basedir}/src/main/java" destdir="${basedir}/bin" > classpathref="bind-classpath" /> > <echo message="Running JiBX binding compiler" /> > <java classname="org.jibx.binding.Compile" fork="yes" failonerror="true" > classpathref="bind-classpath"> > <arg value="-v"/> > <arg value="${basedir}/gen/binding.xml"/> > </java> > > > <echo message="Constructing and copying shared.jar" /> > <mkdir dir="${build-client}/lib" /> > <jar jarfile="${build-client}/lib/shared.jar" > basedir="${basedir}/bin" /> > <mkdir dir="${build-service}/lib" /> > <copy todir="${build-service}/lib" > file="${build-client}/lib/shared.jar" > /> > </target> > > Here is my binding.xml: > <binding xmlns:tns="http://mycompany.com/apsp/domain" > xmlns:ns0="http://mycompany.com/apsp/integration/CustomerService" > name="binding" package="com.mycompany.apsp.domain" force-classes="true" > add-constructors="true"> > <namespace uri="http://mycompany.com/apsp/domain" default="elements"/> > <namespace uri="http://mycompany.com/apsp/integration/CustomerService" > prefix="ns0"/> > <namespace uri="http://mycompany.com/apsp/crossjardepend" prefix="ns1" /> > <include > path="file:///D:/Projects/APSP_integration/CrossJarDependency/gen/person-binding.xml" > precompiled="true"/> > <mapping abstract="true" type-name="tns:customer" > class="com.mycompany.apsp.domain.Customer"> > <structure type="com.mycompany.apsp.crossjardepend.Person"> > <value style="element" name="id" field="id" usage="optional"/> > </structure> > <value style="element" name="firstName" field="firstName" > usage="optional"/> > <value style="element" name="lastName" field="LastName" > usage="optional"/> > <value style="element" name="phone" field="phone" usage="optional"/> > </mapping> > </binding> > > Here is the person-binding.xml that is referenced above: > > <binding xmlns:tns="http://accenture.com/apsp/crossjardepend" name="binding" > package="com.accenture.apsp.crossjardepend"> > <namespace uri="http://accenture.com/apsp/crossjardepend" > default="elements"/> > <mapping abstract="true" type-name="tns:person" > class="com.accenture.apsp.crossjardepend.Person"> > <value style="element" name="id" field="id" usage="optional"/> > </mapping> > <mapping abstract="true" class="com.accenture.apsp.crossjardepend.Person" > name="person"> > <structure map-as="tns:person"/> > </mapping> > </binding> > > > Thanks for any help or ideas for getting past this error! > > -Josh L > > ------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users