为什么javac会创建大量的.class文件?

为什么javac会创建大量的.class文件?,java,compilation,javac,Java,Compilation,Javac,因此,我编写了一个java程序,其中包含一些外部.jar,如SimpleJSON和Selenium。当我用intelliJ编译这个程序时,它只创建了我的.java文件中的一个.class文件 但是如果我通过命令行(javac example.java)编译我的.java,它会创建大约300+个.class文件,包括my.java的.class文件 我只是个古玩为什么?这是正常的行为吗?谁能给我解释一下吗 因此,我期望使用javac编译会产生与在IDE中编译相同的输出,但我想这不是正确的假设 im

因此,我编写了一个java程序,其中包含一些外部.jar,如SimpleJSON和Selenium。当我用intelliJ编译这个程序时,它只创建了我的.java文件中的一个.class文件

但是如果我通过命令行(javac example.java)编译我的.java,它会创建大约300+个.class文件,包括my.java的.class文件

我只是个古玩为什么?这是正常的行为吗?谁能给我解释一下吗

因此,我期望使用javac编译会产生与在IDE中编译相同的输出,但我想这不是正确的假设

import org.json.simple.parser.JSONParser;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.concurrent.TimeUnit;
import java.util.Scanner;
import org.json.simple.*;
import org.openqa.selenium.chrome.ChromeOptions;



public class SeleniumWikipedia
{
    public static String searchTerm;
    public static String JSONpath = internal
    public static String JSONoutput =i nternal
    public static String ceo;

    public static void main(String[] args) throws Exception {
        //readString();
        readJSON();
        ChromeDriver Chrom1 = getDriver();
        Chrom1.get("https://de.wikipedia.org/wiki/Wikipedia:Hauptseite");
        WebElement searchfield = Chrom1.findElement(By.id("searchInput"));
        Chrom1.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        searchfield.sendKeys(searchTerm);
        WebElement searchGo = Chrom1.findElement(By.id("searchButton"));
        searchGo.click();
        checkSuccess(Chrom1);

文件结构:

└───Code
    │   tree.txt
    │
    ├───.vscode
    │       settings.json
    │
    ├───lib
    │       auto-service-1.0-rc6-sources.jar
    │       auto-service-1.0-rc6.jar
    │       auto-service-annotations-1.0-rc6.jar
    │       byte-buddy-1.8.15.jar
    │       client-combined-3.141.59-sources.jar
    │       client-combined-3.141.59.jar
    │       commons-exec-1.3.jar
    │       guava-25.0-jre.jar
    │       json-simple-1.1.1.jar
    │       okhttp-3.11.0.jar
    │       okio-1.14.0.jar
    │
    ├───NyxDevKit.PowerShellErrorHandling
    │       Out-Null
    │       PSErrorHandling.Tests.ps1
    │       PSErrorHandlingScript.ps1
    │
    ├───NyxDevKit.Selenium
    │   │   NyxDevKit.Selenium.iml
    │   │   Output.json
    │   │
    │   ├───.idea
    │   │       compiler.xml
    │   │       misc.xml
    │   │       modules.xml
    │   │       vcs.xml
    │   │       workspace.xml
    │   │
    │   ├───Build
    │   ├───ChromeDriver
    │   │       chromedriver.exe
    │   │
    │   ├───out
    │   │   └───production
    │   │       └───NyxDevKit.Selenium
    │   │           │   Output.json
    │   │           │   SeleniumWikipedia.class
    │   │           │
    │   │           └───ChromeDriver
    │   │                   chromedriver.exe
    │   │
    │   └───src
    │           SeleniumWikipedia.java
    │
    └───NyxDevKit.SeleniumSample
            SeleniumParam.json
out\production文件夹中的.class文件由intelliJ创建

我想编译src中的SeleniumWikipedia.java文件

我如何获取300+类文件:

我打开一个PowerShell,找到SeleniumWikipedia.java文件所在的目录(src),然后键入“javac SeleniumWikipedia.java”。然后花半分钟左右的时间在src文件夹中生成300个左右的.class文件(因为我没有定义其他目录),如屏幕截图所示

我在PowerShell中还看到以下消息:

warning: Implicitly compiled files were not subject to annotation processing.
  Use -proc:none to disable annotation processing or -implicit to specify a policy for implicit compilation.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning

谢谢你的回复。因此,当使用intelliJ?@MushifAliNawaz编译时,不创建这些.class文件也是一种正常行为。这条评论有点让人困惑-
javac
从不从外部JAR提取
.class
文件!这似乎不是正常的行为。您执行的命令真的只是
javac Example.java
?除非您有300多个嵌套/匿名类,否则最终会得到300+
。class
文件确实很奇怪。这些文件的名称是什么?
Example.java
看起来像什么?老兄,“可复制”部分意味着你不显示某些代码,而是显示代码以及你在计算机上所做的一切,从而获得你所观察到的东西。请包括项目的目录结构、放置第三方依赖项的位置以及执行的确切命令。换句话说,请准确描述如何从单个
.java
文件到300+
.class
文件。