you might get this stack error message.
Caused by: java.lang.IllegalStateException: ClassLoader [org.apache.tools.ant.loader.AntClassLoader5] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
Solution is to wrap the offending ant target with the javaagent:org.springframework.instrument.jar
So:
if your build.xml file has the following target,
<target name="create-sql">
.... code that requires javaagent
</target>then you would add a new wrapper target, like so:
<target name="build-create-sql" >
<!--wrapping spring insturment jar-->
<java classname="org.apache.tools.ant.launch.Launcher"
fork="true"
failonerror="true"
dir="."
timeout="4000000"
taskname="startAnt">
<classpath>
<pathelement location="${ant.home}/lib/ant-launcher.jar"/>
</classpath>
<jvmarg value="-javaagent:${spring.instrument.path}"/>
<jvmarg value="-XX:MaxPermSize=512M" />
<jvmarg value="-Xmx1024M" />
<arg value="-buildfile"/>
<arg file="build.xml"/>
<arg value="create-sql"/>
</java>
</target>
Now you can pass in a spring instrument jar as a jvmarg and javaagent in your new ant target and the existing target does not have to be modified.
No comments:
Post a Comment