Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 Wsimport生成的类和原始Web服务类中的名称冲突_Java_Web Services_Class_Duplicates_Wsimport - Fatal编程技术网

Java Wsimport生成的类和原始Web服务类中的名称冲突

Java Wsimport生成的类和原始Web服务类中的名称冲突,java,web-services,class,duplicates,wsimport,Java,Web Services,Class,Duplicates,Wsimport,我有一个简单的web服务类,定义如下: package com.me.basiccalcws; import javax.jws.WebService; @WebService public class Calculator { public int add(int a, int b) { return a + b; } } Add.java AddResponse.java Calculator.java CalculatorService.java Ob

我有一个简单的web服务类,定义如下:

package com.me.basiccalcws;

import javax.jws.WebService;

@WebService
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}
Add.java
AddResponse.java
Calculator.java
CalculatorService.java
ObjectFactory.java
package-info.java
我使用wsgen工具生成wsdl:

然后我使用wsimport生成客户端存根:

wsimport -s src ..\_wsgen\wsdl\CalculatorService.wsdl
运行wsimport后生成的文件如下:

package com.me.basiccalcws;

import javax.jws.WebService;

@WebService
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}
Add.java
AddResponse.java
Calculator.java
CalculatorService.java
ObjectFactory.java
package-info.java
所有这些文件都与我的原始web服务类(com.me.basiccalcws)具有相同的名称空间

当我将这些文件导入Eclipse项目时,会发生名称冲突。我最初的类名是Calculator,但wsimport工具在同一命名空间中创建了另一个名为Calculator的类


如何防止这种名称空间/名称冲突(或者是故意的)?

最简单的方法是在
javax.jws.WebService
注释中提供
targetNamespace
,诸如此类

package com.me.basiccalcws;

import javax.jws.WebService;

@WebService(targetNamespace = "http://client.basiccalcws.me.com/")
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}
如果在中未提供
-p
选项,则此
targetNamespace
是destiny软件包