我在这个目录结构中有一个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
为什么要进行编译,需要/
。但是为了运行它需要.
。
答案 0 :(得分:2)
当您使用CMD或终端编译* .java文件时,您需要提供其确切的路径,并使用“\”分隔路径中的目录结构Windows和Unix中的“/”,因此,当您编译时给出路径,这就是使用斜杠的原因。一旦编译了文件,即* .class,要运行代码,您需要通过指定包结构来运行它。并且它们必须是文件系统路径目录结构和java的包结构的差异。 Java制造商必须使用点(。)而不是斜杠来引起注意。它与您在代码中编写import语句相同(其中包用点(。)而不是斜杠分隔)。这是因为通过斜杠表示您进入一个简单的文件系统目录,表示点(。)表示您正在输入某个包以访问该包中定义的特定Java类。
答案 1 :(得分:0)
编译时,您通过其路径指向源文件(使用斜杠分隔文件夹名称)。在运行时,您使用的是使用点的java命名空间(也称为包+类名)。在Java中,类名必须与文件名完全匹配。对包和文件夹的要求不尽相同,但保持代码组织是一个好主意。