如何在同一个包中轻松运行java程序?

时间:2015-01-13 02:45:24

标签: java compilation cmd package javac

我试图对现有程序进行扩展,并希望创建另一个类来帮助主程序。理想情况下,它们都在同一个包中,可以互相访问。我检查了很多其他问题,并且对一些编译方法的复杂性感到有些困惑(对此新的)。以下是我的设置示例:

我有两个类,一个在同一个包中都有一个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

(请帮助我,我知道这个问题确实是未经修饰的,但是我看了其他问题并没有看到任何简单的答案)。 (不是为了学校,我自己做的事情。)

1 个答案:

答案 0 :(得分:2)

运行Java程序时,指定包和类

包与目录不同。

  1. 虽然目录的分隔符为/,但包的分隔符为.

    换句话说,你必须这样做:

    java crunchy.Important
    

    而不是

    java crunchy/Important
    
  2. 由于Important的包是cereal.crunchy,如果它位于crunchy目录中,它将无效。它必须位于目录cereal/crunchy

    换句话说,cereal必须位于当前目录中。

  3. 所以,你会这样做:

    java cereal.crunchy.important