Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类/包交互_Java - Fatal编程技术网

Java类/包交互

Java类/包交互,java,Java,我有两个.java文件,我试图在OSX终端中用javac编译它们 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 i

我有两个.java文件,我试图在OSX终端中用
javac
编译它们

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
它们都编译时没有任何错误,但当我尝试运行其中一个(例如
javadierun
)时失败,出现错误:无法找到或加载主类DieRun。

您的类位于名为“die”的包中。要运行它们,您有几个选项

快速选项是删除
声明,以便它们位于默认包中。一般来说,这不是最好的做法,但对于快速一次性应用来说完全有效

正确的选择是:

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


    您也可以阅读。

    您的类位于名为“die”的包中。要运行它们,您有几个选项

    快速选项是删除
    声明,以便它们位于默认包中。一般来说,这不是最好的做法,但对于快速一次性应用来说完全有效

    正确的选择是:

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


    您可能也希望阅读。

    已经有了名为die的目录,所以我导航到了一个目录,并运行了
    javadie.RunDie
    ,这很有效。Java是我的第一种“可编译”语言,所以整个包和运行概念对我来说非常奇怪。所以谢谢你。@robjtede很高兴你让它工作起来了。请注意,这种类型的打包不是编译语言的一般特性,而是Java的一个有趣特性。例如,C++不需要目录结构来匹配命名空间层次结构。Java的类和包布局与文件名和目录结构密切相关。已经有一个名为die的目录,所以我导航到一个目录并运行了
    Javadie.RunDie
    ,这很有效。Java是我的第一种“可编译”语言,所以整个包和运行概念对我来说非常奇怪。所以谢谢你。@robjtede很高兴你让它工作起来了。请注意,这种类型的打包不是编译语言的一般特性,而是Java的一个有趣特性。例如,C++不需要目录结构来匹配命名空间层次结构。Java的类和包布局与文件名和目录结构密切相关。