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