如何以编程方式将j2ee.jar添加到Java2WSDL ant脚本?

时间:2010-04-27 17:30:23

标签: java ant wsdl ibm-rad

我正在使用IBM的Rational Application Developer。我有一个包含Java2WSDL任务的ant脚本。当我通过IBM运行它时,它会产生编译错误,除非我通过运行工具在类路径中包含j2ee.jar文件(它不会在脚本的类路径中获取jar文件)。但是,我需要能够以编程方式调用此脚本,并且它给了我这个错误:“java.lang.NoClassDefFoundError:org.eclipse.core.runtime.CoreException”我不确定需要添加哪个jar或者哪里?由于运行一个简单的echo脚本,我认为它是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 个答案:

答案 0 :(得分:0)

jarfinder搜索表明,由于您在Rational环境之外运行,因此您需要访问可能包含该文件的Eclipse核心jar(可能)。