`

(转)关于两个jar包中存在包名和类名都完全相同的问题

    博客分类:
  • Java
阅读更多

转自:

http://blog.csdn.net/jayjjb/article/details/7963937

 

 

最近弄webservice,我使用的jdk自带的wsimport工具来生成客户端代码,发现生成的代码具有编译错误,错误描述如下:

The method getPort(QName, Class<T>) in the type Service is not applicable for the arguments (QName, Class<SCServicePortType>, WebServiceFeature[]).

而我单独创建新的项目来测试生成的客户端代码却没有这样的错误,所以错误原因在于jar包冲突.....

 

几近周折,终于让我发现,原来javax.xml.ws.Service这个类,即存在于jdk自带的rt.jar中,也存在于我项目引用包jaxws-api.jar,这种情况就是两个jar包中存在包名和类名都完全相同的问题。我需要的是rt.jar中的javax.xml.ws.Service类,但它却自动引入了jaxws-api.jar的javax.xml.ws.Service类,但是这两个jar包都不能去掉。

所以,只有改变编译器优先选择的jar顺序(这个顺序是可以改变的):在Eclipse中是在Java Build Path-》Order and Export里面,通过"up"/"down"按钮改变顺序,把jaxws-api.jar放在jdk的下面就可以了。

分享到:
评论

相关推荐

    浅谈两个jar包中包含完全相同的包名和类名的加载问题

    例如,如果两个Jar包中都包含一个名为`com.example.Main`的类,那么JVM将加载哪一个类呢? 在这种情况下,JVM将按照类加载顺序加载类。如果第一个Jar包中的类被加载,那么第二个Jar包中的类将不会被加载。 Maven中...

    Java基础知识考点Java开卷考试.doc

    Java中,`void`和`null`是两个关键字。`void`用于表示方法没有返回值,例如`public void sort();`表示sort方法执行后不返回任何数据。而`null`是一个特殊值,表示对象引用未指向任何实际的对象,即没有分配内存。 ...

    JavaPD-Ch04mao 类与对象 线下班1

    `import`语句用于导入其他包中的类,使得在当前源文件中可以直接使用这些类,无需每次都写全类的完全限定名。 4.12 访问权限 Java提供了四种访问权限修饰符:`public`, `protected`, `private` 和默认(无修饰符)...

    java深度历险 详细讲解了java的package机制等

    本篇将深入探讨这两个概念,以及如何通过Visual Studio .NET来操控Java虚拟机(JVM),同时还会涉及Java 2 Software Development Kit(SDK)的深入理解。 首先,`package`机制是Java中的一个核心特性,它用于将相关...

    【05-面向对象(下)】

    •Object类提供的equals方法判断两个对象相等的标准与==完全相同。因此开发者通常需要重写equals方法。 类成员 •在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用...

    java2实用教程

    - **4.2.8 两个值得注意的问题**:如访问修饰符的使用等。 - **4.3 对象** - **4.3.1 创建对象**:通过类的新实例化操作符 `new` 创建。 - **4.3.2 使用对象**:通过对象调用类的方法和访问属性。 - **4.3.3 ...

    java 面试题 总结

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    超级有影响力霸气的Java面试题大全文档

     JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...

Global site tag (gtag.js) - Google Analytics