Java WS-cast错误

Java WS-cast错误,java,web-services,soap,Java,Web Services,Soap,我有个错误不知道为什么 这是我的项目设置: 每当我运行引用Book.java的服务器方法时,我都会收到此错误消息 java.lang.ClassCastException: com.client.Book cannot be cast to com.server.Book 客户端和服务器上不能有相同的类吗 这是我的书类的代码 *唯一的区别在于包声明 package com.client; /* on client side*/ package com.server; /* on server

我有个错误不知道为什么

这是我的项目设置:

每当我运行引用Book.java的服务器方法时,我都会收到此错误消息

java.lang.ClassCastException: com.client.Book cannot be cast to com.server.Book
客户端和服务器上不能有相同的类吗

这是我的
类的代码

*唯一的区别在于包声明

package com.client; /* on client side*/
package com.server; /* on server side */

import java.io.Serializable;

public class Book implements Serializable
{

/**
 * 
 */
private static final long serialVersionUID = 1L;
private String name, author;
private int copiesAvail;
private int daysToReturn;
public Book()
{

}

public Book (String name, String author)
{
    this.name = name;
    this.author = author;
    copiesAvail = 1;
    daysToReturn = 0;
}

// getters
public String getName() {return name;}
public String getAuthor() {return author;}
public int getCopiesAvail() {return copiesAvail;}
public int getDaysToReturn() {return daysToReturn;}

// setters
public void setName(String name) {this.name = name;}
public void setAuthor(String author) {this.author= author;}
public void setCopiesAvail(int copiesAvail) {this.copiesAvail = copiesAvail;}
public void setDaysToReturn(int daysToReturn) {this.daysToReturn = daysToReturn;}

public String toString()
{
    return "Name: " + getName()
            + "\nAuthor: " + getAuthor()
            + "\nNumber of Copies Available: " + getCopiesAvail();
}

}
导致此错误的原因是什么?

您可以同时拥有这两个包(客户端包和服务器包上的Book.java)。但你为什么这么做?他们做同样的工作,所以不需要上两门课

移除一个类别,并在两侧使用另一个类别。这也会解决你的问题。并将该类移动到一个中立的包中,因为它在服务器和客户端的两侧都使用


希望有帮助。

这两个类虽然名称相同,但却是两个完全不同、不兼容的类。客户端包和服务器包中的Book没有Is-a关系,因此cast肯定会失败


您不必有两个具有完全相同实现的类。如果客户端和服务器都使用这个类,标准的方法是将这个类放在另一个包中,比如说“common”,并在客户端和服务器代码之间共享。

我这样做了,将
Book.java
放在
/com
中,并更改了客户端和服务器中的
导入
引用。现在我得到了
ClassNotFoundException:com.client.Book
它似乎还在
/com/client
中寻找它。你又开始构建项目了吗?清理所有项目,再次编译和构建所有内容。