Java 我不能在eclipse中运行这个程序,但它可以在JGRASP上运行

Java 我不能在eclipse中运行这个程序,但它可以在JGRASP上运行,java,eclipse,command-line,Java,Eclipse,Command Line,我有下面的代码来创建一个抽象类、扩展抽象类的具体类和一个main方法。在JGRASP中编译并正常运行时没有错误。当我在eclipse中运行时,它只是不运行,但不会产生错误。我将文件命名为Product.java 代码如下: abstract class Product { int value; public Product(int val) { value = val; } abstract public int multiply(int n)

我有下面的代码来创建一个抽象类、扩展抽象类的具体类和一个main方法。在JGRASP中编译并正常运行时没有错误。当我在eclipse中运行时,它只是不运行,但不会产生错误。我将文件命名为Product.java

代码如下:

abstract class Product {
    int value;

    public Product(int val) {
        value = val;
    }

    abstract public int multiply(int n);
}

class TimesTwo extends Product {
    public TimesTwo(int val) {
        super(val);
    }

    @Override
    public int multiply(int n) {
        return value * n;
    }

    public static void main(String[] args) {
        TimesTwo two = new TimesTwo(5);
        System.out.println(two.multiply(5));
    }

}
我还尝试在命令行上运行:

javac Product.java
我得到
Product.class
times2.class

当我跑的时候
Java times2.class
Java产品.class


我在线程“main”中得到
异常java.lang.NoClassDefFoundError:

确保
TimesTwo.java
在运行
Eclipse
之前作为单独的java源文件存在,确保
TimesTwo.java
在运行
Eclipse

之前作为单独的java源文件存在。您应该将
TimesTwo
更改为
public>类,并尝试按如下方式运行命令:

java TimesTwo

运行类时,在结尾处没有
.class
,您应该将
TimesTwo
更改为
public class
,并尝试按如下方式运行命令:

java TimesTwo

当运行一个类时,在结尾没有
.class
,这对我来说很有效。您如何在Eclipse中运行该程序?我右键单击TimesTwo->RunAs->Java App。当文件名为Product.Java时,您如何运行它?我需要将下面提到的Reimeus分离出来,以使其工作,以及如何从eclipse获得Times2。因为您只有一个名为Product.Java.的文件,所以我可以使用。您如何在Eclipse中运行该程序?我右键单击TimesTwo->RunAs->Java App。当文件名为Product.Java时,您如何运行它?我需要将下面提到的Reimeus分离出来,以使其工作,以及如何从eclipse获得Times2。因为您只有一个名为Product.Java的文件。事实上,即使文件名为Product.Java,这对我也有效。在我将其分离出来之前,Java甚至没有为我提供运行配置:)我单击了类本身,而不是文件。也许这就是问题所在difference@Reimeus它起作用了,但我为什么要分开呢。是因为,抽象类。如果我有父类和子类,它就可以正常工作,而不会分离出来。不,Eclipse希望类
Product
本身有一个
main
方法,即文件的实际名称。如果您添加了一个虚拟
main
方法,您将获得2个运行配置—每个类一个。命令行解释器没有这个限制实际上,即使文件名为Product.javad,它也能为我提供运行配置,直到我将它分离出来:)我单击了类本身,而不是文件。也许这就是问题所在difference@Reimeus它起作用了,但我为什么要分开呢。是因为,抽象类。如果我有父类和子类,它就可以正常工作,而不会分离出来。不,Eclipse希望类
Product
本身有一个
main
方法,即文件的实际名称。如果您添加了一个虚拟
main
方法,您将获得2个运行配置—每个类一个。命令行解释器没有此限制