【问题标题】:How to easily run java programs in the same package?如何在同一个包中轻松运行java程序?
【发布时间】:2015-03-10 22:31:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: java compilation cmd package javac


    【解决方案1】:

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

    包与目录不同。

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

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

      java crunchy.Important
      

      而不是

      java crunchy/Important
      
    2. 由于Important的包是cereal.crunchy,所以在crunchy目录下是不行的。它必须在目录cereal/crunchy

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

    所以,你会这样做:

    java cereal.crunchy.important
    

    【讨论】:

    • 非常感谢!在以前的课程中,我们从未做过包声明,只是使用 cd 进入文件目录,然后编译并运行它。我认为您必须始终留下一个包声明来描述文件路径。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2020-01-03
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多