Java 程序的编译输出差异,当尝试 运行 与 'Intellij IDE' 和 'Terminal'

Difference in Compilation output of Java program, When trying to run with 'Intellij IDE' and 'Terminal'

其实我是在执行一个特定的程序,如下图所示...

第一种情况:运行使用 默认 运行 选项 Intellij IDE 中的 same.java 文件]
--> 给出正确的输出(你可以在图片中看到)

第二个案例:运行使用命令javac same.java[连接same.java文件=39=] 在终端

error: cannot find symbol
        anotherClass.main(new String[]{"aditya"});  
        ^  
  symbol:   variable anotherClass 
  location: class same

为什么这个问题... 据我所知,在 java 默认情况下,“java.lang”和“当前工作目录”包默认导入...

当您 运行 来自 IDE 的代码时,IDE 会编译您项目中的所有 类。当您从命令提示符 运行 编写代码时,您必须编译所有必要的 类。在这种情况下,您没有编译 anotherClass.

这里是关于如何从命令行编译多个文件的link:https://docs.oracle.com/en/java/javase/13/docs/specs/man/javac.html。转到“编译多个源文件的示例”部分

作为旁注,请使用正确的命名约定。 类 的 industry-accepted 命名约定是“CamelCase”。

这是因为文件 anotherClass.java 的编译字节码在 com/company/com[=19= 位置不可用].查看IntelliJ保存.class文件的文件夹,直接执行

此外,如果您想通过终端手动编译这些文件,请从包外部(src 文件夹)执行。