我试图对现有程序进行扩展,并希望创建另一个类来帮助主程序。理想情况下,它们都在同一个包中,可以互相访问。我检查了很多其他问题,并且对一些编译方法的复杂性感到有些困惑(对此新的)。以下是我的设置示例:
我有两个类,一个在同一个包中都有一个main方法,“cereal.crunchy”。
第1类:重要事项
第2类:垃圾
$ cd ~/Desktop/cereal/
$ javac crunchy/*.java
$ java crunchy/Important
我收到了错误
Could not find or load main class
两者都有包声明:
package cereal.crunchy;
一切都是公开的。
令我困惑的是,当我使用前面提到的方法编译它们然后执行
$ cd ~/Desktop/
$ java cereal/crunchy/important
程序运行并可以访问其他类。
我想我只是不明白为什么我不能这样做:
$ cd ~/Desktop/cereal/
$ javac crunchy/*.java
$ java crunchy/Important
(请帮助我,我知道这个问题确实是未经修饰的,但是我看了其他问题并没有看到任何简单的答案)。 (不是为了学校,我自己做的事情。)
答案 0 :(得分:2)
运行Java程序时,指定包和类
包与目录不同。
虽然目录的分隔符为/
,但包的分隔符为.
。
换句话说,你必须这样做:
java crunchy.Important
而不是
java crunchy/Important
由于Important
的包是cereal.crunchy
,如果它位于crunchy
目录中,它将无效。它必须位于目录cereal/crunchy
。
换句话说,cereal
必须位于当前目录中。
所以,你会这样做:
java cereal.crunchy.important