Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从NetBeans或Eclipse中的wsdl生成代理类_Java_Eclipse_Netbeans_Netsuite - Fatal编程技术网

Java 无法从NetBeans或Eclipse中的wsdl生成代理类

Java 无法从NetBeans或Eclipse中的wsdl生成代理类,java,eclipse,netbeans,netsuite,Java,Eclipse,Netbeans,Netsuite,我在使用NetBeans 7.2为NetSuite生成代理类时遇到问题 WSDL的位置是 在添加引用该WSDL的新Web服务客户端时,我得到以下输出: ant -f "\\\\network.local\\usersfolders\\roberth\\My Documents\\NetBeansProjects\\JavaApplication2" wsimport-client-netsuite init: wsimport-init: Created dir: \\network.local

我在使用NetBeans 7.2为NetSuite生成代理类时遇到问题

WSDL的位置是

在添加引用该WSDL的新Web服务客户端时,我得到以下输出:

ant -f "\\\\network.local\\usersfolders\\roberth\\My Documents\\NetBeansProjects\\JavaApplication2" wsimport-client-netsuite
init:
wsimport-init:
Created dir: \\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated-sources\jax-ws
wsimport-client-netsuite:
Created dir: \\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax-wsCache\netsuite
command line: wsimport -d "\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax-wsCache\netsuite" -extension -Xnocompile -Xendorsed -keep -s "\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax-wsCache\netsuite" -catalog "\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2" -verbose "\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\xml-resources\web-service-references\netsuite\wsdl" -wsdllocation https://webservices.netsuite.com/wsdl/v2012_2_0/netsuite.wsdl
Missing WSDL_URI

Usage: wsimport [options] <WSDL_URI>
where [options] include:
  -b <path>                 specify jaxws/jaxb binding files or additional schemas
                            (Each <path> must have its own -b)

Examples:
  wsimport stock.wsdl -b stock.xml -b stock.xjb
  wsimport -d generated http://example.org/stock?wsdl

\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\nbproject\jaxws-build.xml:22: wsimport failed
BUILD FAILED (total time: 0 seconds)
ant-f“\\\\network.local\\usersfolders\\roberth\\My Documents\\NetBeansProjects\\JavaApplication2”wsimport客户端netsuite
初始化:
wsimport init:
创建目录:\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated sources\jax-ws
wsimport客户端netsuite:
创建目录:\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax wsCache\netsuite
命令行:wsimport-d“\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax wsCache\netsuite”-extension-Xnocompile-Xendorsed-keep-s”\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\build\generated\jax wsCache\netsuite”-目录“\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2”-verbose”\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\xml资源\web服务引用\netsuite\wsdl”-wsdllocationhttps://webservices.netsuite.com/wsdl/v2012_2_0/netsuite.wsdl
缺少WSDL\u URI
用法:wsimport[选项]
其中[选项]包括:
-b指定jaxws/jaxb绑定文件或其他模式
(每个都必须有自己的-b)
示例:
wsimport stock.wsdl-b stock.xml-b stock.xjb
wsimport-d生成http://example.org/stock?wsdl
\\network.local\usersfolders\roberth\My Documents\NetBeansProjects\JavaApplication2\nbproject\jaxws build.xml:22:wsimport失败
生成失败(总时间:0秒)
我已经习惯了C#和导入服务引用(我对Java中的ANT和web服务没有任何经验),我不确定如何继续。有人能给我指出正确的方向吗

--编辑--

在几次尝试之后,我能够在Eclipse中生成代理类,但是我发现有些类没有生成。进一步的研究发现,原因是我需要能够生成未引用的类型。NetSuite文档说要在ant任务中添加以下内容:

或者,也可以将-w-a添加到以下命令中:
java-cp org.apache.axis.wsdl.WSDL2Java

然而,我通过commmand
wsdl2java.bat-ss-sd尝试了选项2
-ap-urihttps://webservices.netsuite.com/wsdl/v2012_2_0/netsuite.wsdl
并获得:


线程“main”org.apache.axis2.wsdl.codegen.CodeGenerationException中的异常
:org.apache.axis2.wsdl.codegen.CodeGenerationException:java.lang.RuntimeException
离子:元素QName对于ExceedRequestSizeFault为空!
在org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerer
ationEngine.java:293)


例外情况仍在继续,如果需要更多详细信息,请让我知道。

我已经能够克服此错误,但如果我无法解决,则可能会出现另一个错误,该错误可能会作为新问题发布。无论如何,为了克服此问题,我必须执行以下操作:

  • 安装最新的Java 6 SDK
  • 将my AXIS_HOME和JAVA_HOME环境变量设置为指向AXIS 1.4和JAVA 6安装
  • 重新启动
  • 将NetSuite提供的Ant Build.xml和NetSuite.preferences文件复制到我的新项目中
  • 将timeout=“120000”添加到
  • 将NetSuite.preferences部分中的wsdl.url变量指向要生成的wsdl的位置
  • 构建ant项目
  • 注释掉位于platform.common->TransactionSearchRowBasic和TransactionSearchBasic中的多参数构造函数(将错误抛出到多个参数的构造函数)
  • 将生成的类复制到所需的路径结构

希望这能帮助任何试图用NetSuite测试Java的人…

我已经克服了这个错误,但如果我无法解决,可能会有另一个错误作为新问题发布。无论如何,为了克服这个问题,我必须执行以下操作:

  • 安装最新的Java 6 SDK
  • 将my AXIS_HOME和JAVA_HOME环境变量设置为指向AXIS 1.4和JAVA 6安装
  • 重新启动
  • 将NetSuite提供的Ant Build.xml和NetSuite.preferences文件复制到我的新项目中
  • 将timeout=“120000”添加到
  • 将NetSuite.preferences部分中的wsdl.url变量指向要生成的wsdl的位置
  • 构建ant项目
  • 注释掉位于platform.common->TransactionSearchRowBasic和TransactionSearchBasic中的多参数构造函数(将错误抛出到多个参数的构造函数)
  • 将生成的类复制到所需的路径结构
希望这能帮助任何试图用NetSuite测试Java的人…

Robert, 问题其实是不同的

如果检查WSDL中的操作“getDataCenterUrls”:


这定义了ExceedRequestSizeDefault,但在GetDatacenterURL的绑定部分中未指定:

    <operation name="getDataCenterUrls">
        <input name="getDataCenterUrlsRequest" message="tns:getDataCenterUrlsRequest"/>
        <output name="getDataCenterUrlsResponse" message="tns:getDataCenterUrlsResponse"/>
        <fault name="ExceededRequestSizeFault" message="tns:ExceededRequestSizeFault"/>
        <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
    </operation>
    <operation name="getDataCenterUrls">
        <soap:operation soapAction="getDataCenterUrls"/>
        <input name="getDataCenterUrlsRequest">
            <soap:header message="tns:headers" part="passport" use="literal"/>
            <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
            <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
            <soap:header message="tns:headers" part="preferences" use="literal"/>
            <soap:body use="literal"/>
        </input>
        <output name="getDataCenterUrlsResponse">
            <soap:header message="tns:headers" part="documentInfo" use="literal"/>
            <soap:body use="literal"/>
        </output>
        <fault name="UnexpectedErrorFault">
            <soap:fault name="UnexpectedErrorFault" use="literal"/>
        </fault>
    </operation>

因此,只需通过添加 要获取绑定部分中的DataCenterURL操作, 问题其实是不同的

如果检查WSDL中的操作“getDataCenterUrls”:


这定义了ExceedRequestSizeDefault,但在GetDatacenterURL的绑定部分中未指定:

    <operation name="getDataCenterUrls">
        <input name="getDataCenterUrlsRequest" message="tns:getDataCenterUrlsRequest"/>
        <output name="getDataCenterUrlsResponse" message="tns:getDataCenterUrlsResponse"/>
        <fault name="ExceededRequestSizeFault" message="tns:ExceededRequestSizeFault"/>
        <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
    </operation>
    <operation name="getDataCenterUrls">
        <soap:operation soapAction="getDataCenterUrls"/>
        <input name="getDataCenterUrlsRequest">
            <soap:header message="tns:headers" part="passport" use="literal"/>
            <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
            <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
            <soap:header message="tns:headers" part="preferences" use="literal"/>
            <soap:body use="literal"/>
        </input>
        <output name="getDataCenterUrlsResponse">
            <soap:header message="tns:headers" part="documentInfo" use="literal"/>
            <soap:body use="literal"/>
        </output>
        <fault name="UnexpectedErrorFault">
            <soap:fault name="UnexpectedErrorFault" use="literal"/>
        </fault>
    </operation>