首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无法找到或加载主类应用程序

错误:无法找到或加载主类应用程序
EN

Stack Overflow用户
提问于 2014-01-25 12:31:20
回答 2查看 1.2K关注 0票数 1

有人能告诉我如何在这段代码上运行main方法吗?我想检查是否有任何编译时错误或运行时错误,但我得到这个错误消息“无法找到或加载主类应用程序”。

代码语言:javascript
复制
class Book {
private static int internalID = 0;
private String isbn;
private int myID;

public Book(String isbnP) {
    if (isbnP == null) {
        throw new IllegalArgumentException("null ISBN not accepted");
    }
    isbn = isbnP;
    myID = internalID++;
}

public String getBookinfo() {
    return isbn;
}

public String toString() {
    return "<" + myID + "," + isbn + ">";
}
// To Do: Override Object.equals()
// Two objects are equal iff isbn of the two books are same

}

class ComSBook extends Book {
private String category;

public ComSBook(String isbnP, String catP) {
    super(isbnP);
    category = catP;
}

@override
public String getBookInfo() {
    return "ComS " + category + " " + super.getBookinfo();
}
}

class NetworkBook extends ComSBook {
private boolean isWithCD;

public NetworkBook (String isbnP, boolean withCD){
    super(isbnP,"Network");
    isWithCD = withCD;
}
@override
public String getBookInfo(){
    return super.getBookInfo() + " withCD: " + isWithCD;
}
}


class ReviewPolymorp{
public static void main(String[] args){
    Book abook = new Book("A-1");
    Book bbook = new Book("B-1");
    ComSBook csbook = new ComSBook("C-11", "General");
    NetworkBook netbook = new NetworkBook("N-11", true);

    System.out.println(abook);
    System.out.println(bbook);
    System.out.println(csbook);
    System.out.println(netbook);

    abook = csbook;
    System.out.println(abook.getBookinfo());

    bbook = netbook;
    System.out.println(bbook.getBookinfo());

    netbook = (NetworkBook) bbook;
    System.out.println(netbook.getBookinfo());

    netbook = (NetworkBook) csbook;
    System.out.println(netbook.getBookinfo());

    netbook = csbook;

}
}
EN

回答 2

Stack Overflow用户

发布于 2014-01-25 12:34:15

您的文件应该是ReviewPolymorp.javaclass ReviewPolymorp{应该是public,因为它是使用main方法的程序的加载点

您可能还希望检查项目中的主类是否为ReviewPolymorp。我只知道如何在Netbeans中执行此操作

在项目上单击鼠标右键并选择Properties

  • Click

  • 确保您的项目是具有完全限定名称的主类,例如mypackage.ReviewPolymorp

  • Then rebuild
  • ReviewPolymorp
票数 2
EN

Stack Overflow用户

发布于 2014-01-25 13:15:31

当我将您的代码复制到我的IDE(它是eclipse)中时,下面这一行显示了一个编译错误:

代码语言:javascript
复制
netbook = csbook;

不能将超类的实例强制转换为子类。

禁用此行后,一旦运行以下代码,我就会从控制台获得输出:

代码语言:javascript
复制
<0,A-1>
<1,B-1>
Exception in thread "main" <2,C-11>
<3,N-11>
C-11
N-11
N-11
java.lang.ClassCastException: com.test.ComSBook cannot be cast to com.test.NetworkBook
at com.test.ReviewPolymorp.main(ReviewPolymorp.java:75)

上面的编译错误也有同样的问题。

禁用这三行后

代码语言:javascript
复制
netbook = (NetworkBook) csbook;
System.out.println(netbook.getBookinfo());
csbook = netbook;

代码在没有任何修改的情况下工作良好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21346651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档