【问题标题】:How do I add the j2ee.jar to a Java2WSDL ant script programmatically?如何以编程方式将 j2ee.jar 添加到 Java2WSDL ant 脚本?
【发布时间】:2010-04-27 17:30:23
【问题描述】:

我正在使用 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 - 当您自己运行脚本时,所有这些都包含在构建路径中。)


脚本:

<?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)

【问题讨论】:

  • 这是 IBM 的 java2wsdl 的一个已知问题。

标签: java ant wsdl ibm-rad


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2013-12-30
    相关资源
    最近更新 更多