2015-01-13 40 views
2

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

我有两个类,一个主要方法都在同一个包,“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 

(请帮助我,我明白,这个问题确实是糙米,但是我看了看其他的问题,并没有看到任何简单的答案)。 (不适用于学校,我自己正在做的事情)。

回答

2

当你运行一个Java程序,您指定的包和类

包是不一样的目录。

  1. 虽然目录,隔板为/,用于包装,隔板为.

    换句话说,你必须做的:

    java crunchy.Important 
    

    代替

    java crunchy/Important 
    
  2. 由于Important包是cereal.crunchy,如果它在该目录crunchy它不会工作。它必须位于目录cereal/crunchy中。

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

所以,你会做这样的:

java cereal.crunchy.important 
+0

非常感谢!在之前的课程中,我们从未做过包声明,只是使用cd来到文件的目录,然后编译并运行它。我认为你必须始终留下一份包装说明来描述文件路径。谢谢! –

相关问题