2

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

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

4

2 回答 2

3

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

于 2013-10-29T02:55:38.113 回答
0

When you are compiling you are pointing to a source file by its path (that uses slashes to separate folder names). When running you are using a java namespace (also called a package+Class name) which use dots. In Java the class name must exactly match the file name. There isn't the same requirement for packages and folders though it's a good idea for keeping code organized.

于 2013-10-29T02:33:38.860 回答