Javac如何处理多个文件、目录、类和源代码?

Javac如何处理多个文件、目录、类和源代码?,java,compilation,javac,Java,Compilation,Javac,我试图弄清楚javac是如何在源路径、类路径和预构建类等方面工作的。我试图阅读文档,但无法真正理解它 我试着想一些下面的例子 如果我只编译一个没有依赖项的文件onlyfile.java,它有两个类a和B,类a使用类B,那么类B是否需要在类a之前定义/声明?或者javac是智能的,可以进行多次传递或类似的操作吗 root.java使用位于同一文件夹中的文件file2.java中的另一个类。如果我执行javac root.java,javac如何知道在文件夹中搜索类文件,如果没有找到,则搜索源文件

我试图弄清楚javac是如何在源路径、类路径和预构建类等方面工作的。我试图阅读文档,但无法真正理解它

我试着想一些下面的例子

如果我只编译一个没有依赖项的文件onlyfile.java,它有两个类a和B,类a使用类B,那么类B是否需要在类a之前定义/声明?或者javac是智能的,可以进行多次传递或类似的操作吗

root.java使用位于同一文件夹中的文件file2.java中的另一个类。如果我执行javac root.java,javac如何知道在文件夹中搜索类文件,如果没有找到,则搜索源文件

如果file2位于子目录中,上述操作是如何工作的

编辑: 我在某个地方读到,导入只是一种减少键入的方法,而不是像python那样加载任何东西。
假设我只构建了一个使用多个其他类的java文件,并且这些类文件已经存在。如果没有导入,类对象的a.b.c.d部分已经告诉我在哪里搜索类文件,那么为什么要使用cp选项?

对于前两个选项,请尝试使用javac*.java


重复的

1如果编译使用类B的类A,则类B也将被强制执行。如果编译在A中使用的类B,但在B中未使用A,则不会强制使用类A。查找更多详细信息和示例

2 javac在源路径和类路径内搜索。如果运行javac时没有像javac A.java这样的参数,它会将classpath和sourcepath设置为当前目录。若在类路径和源路径中都找不到请求的类,那个么将出现编译错误

3 Java对项目结构有严格的规则。在不更新文件内容的情况下,不能简单地将源文件放置到另一个文件夹中

项目中的每个文件夹都应该具有与包声明相关的文件夹层次结构

定义:包是一组提供访问保护和名称空间管理的相关类型

例如,如果您有一个类A.java,其包声明如下

package com.mycompany;
相应的文件夹结构应如下所示:

com/mycompany/A.java

如果您遵循此规则,编译器将能够像我在1中解释的那样解析依赖项。查找更多信息。

我不是在寻求解决方案。我正在尝试学习Javac的工作原理。1,为什么不自己试试看?”安德烈亚斯,我的系统上没有java设置,我只是想了解它是如何工作的,来自C++后台,我认为你应该在系统上安装java。没有比动手操作更好的学习工具了。或的可能副本