在命令行中编译和运行Java类包?

时间:2013-10-29 02:31:18

标签: java command-line compilation package

我在这个目录结构中有一个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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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