我正在使用Java开发CORBA应用程序。我使用'idlj'来生成存根和骨架。在编译时我得到了这个错误。
Account.java:12: error: Account is not abstract and does not override abstract method _all_interfaces(POA,byte[]) in Servant public class Account extends org.omg.PortableServer.Servant ^ Note: SMTS/AccountPOA.java uses unchecked or unsafe operations.
这些是类定义和idl定义。
SMTS.idl文件
module SMTS{
interface Account{
attribute string accountID;
attribute double balance;
void setAccountID(inout string accid);
void setBalance(inout double value);
};
};
Account.java类
public class Account extends AccountPOA{
private ORB orb;
private String accountID;
private double balance;
public void setORB(ORB orb_val){
orb = orb_val;
}
public void setAccountID(String accid){
this.accountID = accid;
}
public void setBalance(double value){
this.balance = value;
}
}
答案 0 :(得分:1)
类AccountPOA
或其中一个超类具有一个或多个未被覆盖的抽象方法。如果扩展包含抽象方法的抽象类,则必须覆盖所有抽象方法。唯一的例外是你的类本身是抽象的。只要你有一个可以实例化的具体类(=非抽象),你必须覆盖所有抽象方法。
因此,请查看AccountPOA
的代码以及它扩展或实现的所有类和接口。某处必须有一个抽象的方法,在类层次结构中没有被覆盖。