Java类/包交互

时间:2014-04-21 17:53:53

标签: java

我在OS X终端中尝试使用javac编译两个.java文件。

DieRun.java

package die;

public class DieRun {
    public static void main(String[] args) {

        Die d6 = new Die(6);

    }
}

和Die.java:

package die;

import java.util.Random;

public class Die {

    private int sides;
    private int value;
    private Random rng;

    public Die(int sides) {
        this.sides = sides;
        this.rng = new Random();
        this.value = this.roll();
    }

    public Die(int sides, int seed) {
        this.sides = sides;
        this.rng = new Random(seed);
        this.value = this.roll();
    }

    public int roll() {
        this.value = this.rng.nextInt(this.sides) + 1;
        return this.value;
    }

    public int getValue() {
        return this.value;
    }

}

使用javac *.java它们都可以编译而没有任何错误但是当我尝试运行其中一个(例如。java DieRun)时它会失败并显示错误:无法找到或加载主类DieRun。

1 个答案:

答案 0 :(得分:4)

您的课程名称为" die"。要运行它们,您有几个选择。

快速选项是删除package声明,使它们位于默认包中。这不是一般的最佳实践,但对于快速一次性应用非常有效。

正确的选项是:

  1. 将源文件放在名为" die"。
  2. 的子目录中
  3. 在那里编译它们(以便类文件在" die" - 这是实际的重要部分)。
  4. 上移到父目录并运行java die.DieRun
  5. 目录结构必须与包结构匹配。关于当前的课程路径等,还有更多内容,但这会让你站起来。

    您也可以阅读official tutorial on packages