繁体   English   中英

尝试使用“Intellij IDE”和“终端”运行时,Java 程序的编译 output 的差异

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

实际上,我正在执行一个特定的程序,如下图所示......

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

在此处输入图像描述

第二种情况:在终端中使用命令javac same.java运行相同的.java 文件

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

在此处输入图像描述

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

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

这是有关如何从命令行编译多个文件的链接: https://docs.oracle.com/en/java/javase/13/docs/specs/man/javac.ZFC35FDC70D5FC69D269883.A8 Go 下到“编译多个源文件的示例”部分

作为旁注,使用正确的命名约定。 行业接受的类命名约定是“CamelCase”。

发生这种情况是因为文件anotherClass.java的编译字节码在com/company/com位置不可用。 检查 IntelliJ 保存.class文件的文件夹并直接执行它们。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM