【问题标题】:I cant run this program in eclipse but it works on JGRASP我不能在 Eclipse 中运行这个程序,但它可以在 JGRASP 上运行
【发布时间】:2013-08-16 19:58:12
【问题描述】:

我有以下代码创建一个抽象类、扩展抽象类的具体类和一个主方法。没有错误,因为它在 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.classTimesTwo.class

当我跑步时 Java TimesTwo.classJava Product.class

我收到Exception in thread "main" java.lang.NoClassDefFoundError:

【问题讨论】:

  • 为我工作。你是如何在 Eclipse 中运行程序的?我右键单击 TimesTwo -> Run as -> Java App。
  • 当文件被命名为Product.java时,你怎么能运行它呢?我需要像下面提到的 Reimeus 那样分开以使其正常工作,以及您是如何从 Eclipse 中获得 TimesTwo 的。由于您只有名为 Product.Java.. 的文件

标签: java eclipse command-line


【解决方案1】:

确保TimesTwo.javaEclipse 中运行之前作为单独的Java 源文件存在。

【讨论】:

  • 实际上,即使文件名为 Product.java,这对我也有用
  • 在我把它分开之前甚至没有为我提供运行配置:)
  • 我点击了类本身,而不是文件。也许这就是区别
  • @Reimeus 它有效,但我为什么要分开。是因为,抽象类。如果我有父类和子类,它可以正常工作而无需分离。
  • 不,Eclipse 期望类 Product 本身有一个 main 方法,即文件的实际名称。如果您添加了一个虚拟 main 方法,您将获得 2 个运行配置 - 每个类一个。命令行解释器没有这个限制
【解决方案2】:

您应该将TimesTwo 更改为public class 并尝试运行如下命令:

java TimesTwo

运行类时结尾没有.class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多