【问题标题】:compiling and running packages of Java classes in command line?在命令行中编译和运行 Java 类的包?
【发布时间】:2013-11-08 00:58:49
【问题描述】:

我在这个目录结构中有一个helloworld.java

    bash: ls
    com
    bash: ls com/
    stack
    bash: ls com/stack/
    prog
    bash: ls com/stack/prog/helloworld.java

编译我做了,javac com/stack/prog/helloworld.java 但是为了运行它,我做到了,java com.stack.prog/helloworld

为什么要编译,需要/。但是运行它需要.

【问题讨论】:

    标签: java command-line compilation package


    【解决方案1】:

    当您使用 CMD 或终端编译 *.java 文件时,您需要提供其确切的该文件的路径,并在路径中使用“\”分隔目录结构 Windows 和 Unix 中的“/”,所以,当你编译时你给出了路径,这就是为什么使用斜杠。一旦编译了文件,即生成了 *.class,要运行代码,您需要通过指定其包结构来运行它。而且它们必须是文件系统路径目录结构和java的包结构不同。 Java 制造商必须使用点(。)而不是斜线来引起注意。它与您在代码中编写 import 语句 相同(其中包由点 (.) 分隔,而不是斜线)。这是因为斜杠表示您正在进入一个简单的文件系统目录,而点(。)表示您正在进入某个包以访问该包中定义的特定 Java 类。 p>

    【讨论】:

    • 我想知道,这是否意味着我们不能在该路径的文件夹中使用点?有没有办法解决这个问题?
    【解决方案2】:

    当您编译时,您通过其路径指向源文件(使用斜杠分隔文件夹名称)。运行时,您使用的是使用点的 java 命名空间(也称为包+类名)。在 Java 中,类名必须与文件名完全匹配。对包和文件夹没有相同的要求,尽管它是保持代码组织的好主意。

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多