不抽象且不覆盖抽象方法 - IDL

Not abstract and does not override abstract method - IDL

我正在使用 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.

这些是 class 定义和 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 class

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;
    }
}

class AccountPOA 或其超类之一 class 具有一个或多个未被覆盖的抽象方法。如果您扩展包含抽象方法的抽象 class,则您必须重写所有抽象方法。唯一的例外是你的 class 本身是抽象的。只要你有一个可以实例化的具体class(=非抽象),你必须覆盖所有抽象方法。

因此,请查看 AccountPOA 的代码以及它扩展或实现的所有 classes 和接口。 class 层次结构中一定有一个未被重写的抽象方法。