Как программно добавить файл j2ee.jar в сценарий Ant для Java2WSDL?
Я использую IBM Rational Application Developer. У меня есть муравей скрипт, который содержит задачу Java2WSDL. Когда я запускаю его через IBM, он выдает ошибки компилятора, если я не включаю файл j2ee.jar в путь к классам с помощью инструмента запуска (он не выбирает файлы jar в пути к классам в сценарии). Тем не менее, я должен быть в состоянии вызвать этот сценарий программно, и он дает мне такую ошибку: "java.lang.NoClassDefFoundError: org.eclipse.core.runtime.CoreException" Я не уверен, какие банки нужно добавить или где? Поскольку запускается простой эхо-скрипт, я предполагаю, что это j2ee.jar или другой ant jar, который нужно добавить. Я добавил его в путь сборки проекта, но это не помогает. (У меня также есть ant.jar, wsanttasks.jar, все ant jar из плагина, tools.jar, remoteAnt.jar и swt - все, что включается в buildpath, когда вы запускаете скрипт самостоятельно.)
Автор сценария:
<?xml version="1.0" encoding="UTF-8"?>
<project default="build" basedir=".">
<path id="lib.path">
<fileset dir="C:\Program Files\IBM\WebSphere\AppServer\lib" includes="*.jar"/>
<!--
Adding these does not help.
<fileset dir="C:\Program Files\IBM\SDP70Shared\plugins\org.apache.ant_1.6.5\lib" includes="*.jar"/>
<fileset dir="C:\Program Files\IBM\SDP70\jdk\lib" includes="*.jar"/>
<fileset dir="C:\Program Files\IBM\SDP70\configuration\org.eclipse.osgi\bundles\1139\1\.cp\lib" includes="*.jar"/>
<fileset dir="C:\Program Files\IBM\SDP70Shared\plugins" includes="*.jar"/>
-->
</path>
<taskdef name="java2wsdl"
classname="com.ibm.websphere.ant.tasks.Java2WSDL">
<classpath refid="lib.path"/>
</taskdef>
<target name="build">
<echo message="Beginning build"/>
<javac srcdir="C:\J2W_Test\Java2Wsdl_Example"
destdir="C:\J2W_Test\Java2Wsdl_Example">
<classpath refid="lib.path"/>
<include name="WSExample.java"/>
</javac>
<echo message="Set up javac"/>
<echo message="Running java2wsdl"/>
<java2wsdl output="C:\J2W_Test\Java2Wsdl_Example\example\META-INF\wsdl\WSExample.wsdl"
classpath="C:\J2W_Test\Java2Wsdl_Example"
className= "example.WSExample"
namespace="http://example"
namespaceImpl="http://example"
location="http://localhost:9080/example/services/WSExample"
style="document"
use="literal">
<mapping namespace="http://example" package="example"/>
</java2wsdl>
<echo message="Complete"/>
</target>
</project>
Код:
File buildFile = new File("build.xml");
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
p.addBuildListener(consoleLogger);
try {
p.fireBuildStarted();
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget(p.getDefaultTarget());
p.fireBuildFinished(null);
} catch (BuildException e) {
p.fireBuildFinished(e);
}
Ошибка:
[java2wsdl] java.lang.NoClassDefFoundError: org.eclipse.core.runtime.CoreException
[java2wsdl] at java.lang.J9VMInternals.verifyImpl(Native Method)
[java2wsdl] at java.lang.J9VMInternals.verify(J9VMInternals.java:68)
[java2wsdl] at java.lang.J9VMInternals.initialize(J9VMInternals.java:129)
[java2wsdl] at com.ibm.ws.webservices.multiprotocol.discovery.ServiceProviderManager.getDiscoveredServiceProviders(ServiceProviderManager.java:378)
[java2wsdl] at com.ibm.ws.webservices.multiprotocol.discovery.ServiceProviderManager.getAllServiceProviders(ServiceProviderManager.java:214)
[java2wsdl] at com.ibm.ws.webservices.wsdl.fromJava.Emitter.initPluggableBindings(Emitter.java:2704)
[java2wsdl] at com.ibm.ws.webservices.wsdl.fromJava.Emitter.<init>(Emitter.java:389)
[java2wsdl] at com.ibm.ws.webservices.tools.ant.Java2WSDL.execute(Java2WSDL.java:122)
[java2wsdl] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[java2wsdl] at org.apache.tools.ant.Task.perform(Task.java:364)
[java2wsdl] at org.apache.tools.ant.Target.execute(Target.java:341)
[java2wsdl] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[java2wsdl] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[java2wsdl] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[java2wsdl] at att.ant.RunAnt.main(RunAnt.java:32)
1 ответ
Поиск в jarfinder предполагает, что, поскольку вы работаете вне среды Rational, вам необходим доступ к ключевым файлам Eclipse (возможно), где может содержаться этот файл.