Hi,
It seems the parser.jar used by Ant1.3 is not compatible with the one used
by BEA Weblogic 5.1.0. Is there a way to fix this? When I use the <ejbjar>
task, I get this error:
[java] java.lang.ClassCastException
[java] at
weblogic.xml.dom.DOMUtils.getOptionalElementsByTagName(DOMUtils.java,
Compiled Code)
[java] at
weblogic.xml.dom.DOMUtils.getOptionalElementByTagName(DOMUtils.java:170)
[java] at
weblogic.xml.dom.DOMUtils.getOptionalValueByTagName(DOMUtils.java:97)
[java] at
weblogic.ejb.deployment.dd.EJBReadDOM.getDescriptionValue(EJBReadDOM.java:40
4)
[java] at
weblogic.ejb.deployment.dd.DescriptorLoader.createDeploymentUnit(DescriptorL
oader.java:200)
[java] at weblogic.ejbc.runBody(ejbc.java, Compiled Code)
[java] at weblogic.utils.compiler.Tool.run(Tool.java:80)
[java] at weblogic.ejbc.main(ejbc.java:353)
[java] weblogic.utils.compiler.ToolFailureException: ERROR:
java.lang.ClassCastException
[java] at weblogic.ejbc.runBody(ejbc.java, Compiled Code)
[java] at weblogic.utils.compiler.Tool.run(Tool.java:80)
[java] at weblogic.ejbc.main(ejbc.java:353)
[java] Java Result: 1
BEA told me weblogic.ejbc has a problem with more recent XML parsers, but
that it is fixed in Service Pack 8. My organization cannot go to SP8,
however, so I'm wondering if there is a way to fix it right in my build
file. The problem seems to be that ant.bat puts $ANT_HOME/lib/parser.jar
into the classpath used to run ant (this much makes sense), and that this
classpath becomes the java.class.path system property (this also makes
sense). Though I wish it were otherwise, however, Ant seems to insist on
prepending the java.class.path to the classpath I use in the <ejbjar> task.
This causes problems. If the java.class.path could be appended to the end,
or better yet, not included at all, that would work great.
So, my main questions are these:
1. Does <ejbjar> automagically prepend the java.class.path property to the
classpath used to run weblogic.ejbc?
2. If 1, then why?
3. If 1 & 2, how can I make it stop?
Here's how I'm using <ejbjar> in my build.xml file:
<target name="ejbs" depends="init,classes">
<echo message="Generating EJBs"/>
<ejbjar srcdir="${build.dir}"
flatdestdir="true"
descriptordir="${src.dir}">
<weblogic destdir="${build.dir}"
keepgeneric="no"
classpath="${build.dir}:${wl.home}/license:${wl.home}/classes:${wl.home}/lib
/weblogicaux.jar"
oldCMP="true"
suffix="-weblogic-ejb.jar"/>
<include name="**/${includes.list}/**/*-ejb-jar.xml"/>
<exclude name="**/*weblogic*.xml"/>
</ejbjar>
</target>
This task produces the following output:
[java] Forking java -classpath
"C:\Sybase\asep\monclass.zip;C:\Sybase\asep\3pclass.zip;C:\Program
Files\Exceed.nt\hcljrcsv.jar;C:\Program Files\Exceed.nt;C:\Program
Files\Rational\Rational Test
7;C:\dventimiglia_coreMsdw_PersonalDevStream_snapshot\coreMsdw\classes\ant\l
ib\ant.jar;C:\dventimiglia_coreMsdw_PersonalDevStream_snapshot\coreMsdw\clas
ses\ant\lib\jaxp.jar;C:\dventimiglia_coreMsdw_PersonalDevStream_snapshot\cor
eMsdw\classes\ant\lib\optional.jar;C:\dventimiglia_coreMsdw_PersonalDevStrea
m_snapshot\coreMsdw\classes\ant\lib\parser.jar;C:\jdk1.2.2\lib\tools.jar;C:\
staging;C:\weblogic\license;C:\weblogic\classes;C:\weblogic\lib\weblogicaux.
jar;C:\dventimiglia_coreMsdw_PersonalDevStream_snapshot\coreMsdw\classes\log
4j-full.jar" weblogic.ejbc -noexit C:\staging\CommandProxy-generic.jar
C:\staging\CommandProxy-weblogic-ejb.jar
Note the extra classpath elements that occur before "C:\staging", which is
the value of ${build.dir}. These are coming from java.class.path.
Thanks!
Cheers,
David A. Ventimiglia