java.lang.NoSuchFieldError:默认值

java.lang.NoSuchFieldError:默认值,java,apache-poi,nosuchfieldexception,Java,Apache Poi,Nosuchfieldexception,我目前正在使用vscode和apachepoi,创建了一个程序来自动创建一个.xlsx程序,并让A1单元输入一个名为“Tester”的字符串,然后错误弹出 我的程序中的代码: package excel_reader; import java.io.FileOutputStream; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.a

我目前正在使用vscode和apachepoi,创建了一个程序来自动创建一个
.xlsx
程序,并让A1单元输入一个名为“Tester”的字符串,然后错误弹出

我的程序中的代码:

package excel_reader;

import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelWriter {
    public static void main (String[] args) throws Exception {
        //ExcelReader eR = new ExcelReader();
        XSSFWorkbook workbook = new XSSFWorkbook();  // here is the7 line 13
        // first sheet create
        XSSFSheet sheet = workbook.createSheet("FirstExcelSheet");
        // first row create - A
        XSSFRow row = sheet.createRow(0);
        // first cell create - 1
        XSSFCell cell = row.createCell(0); // A-1
        // give data into A-1 cell
        cell.setCellValue("Tester");

        // Output as an excel file
        workbook.write(new FileOutputStream("C:\\Users\\Sonic\\Desktop\\book.xlsx"));
        workbook.close();

        // C:\\Users\\Sonic\\Desktop\\book.xlsx
    }
}
错误代码:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell aka.ms/pscore6

PS E:\excel_reader_v.1_beta1-0> cd 'e:\excel_reader_v.1_beta1-0'; & 'C:\Users\Sonic\.vscode\extensions\vscjava.vscode-java-debug-0.24.0\scripts\launcher.bat' 'C:\Users\Sonic\AppData\Local\Programs\AdoptOpenJDK\bin\java' '-Dfile.encoding=UTF-8' '-cp' 'C:\Users\Sonic\AppData\Local\Temp\cp_5wuvlu562pjj6rfd2pconxvl4.jar' 'excel_reader.ExcelWriter' 
Exception in thread "main" java.lang.NoSuchFieldError: DEFAULT
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:161)
        at excel_reader.ExcelWriter.main(ExcelWriter.java:13)
Apache POI对我来说是新手,请帮助我,我将非常感激,非常感谢。

导致
java.lang.NoSuchFieldError
如果您搜索StackOverflow中的标签,您将发现许多类似的问题。他们中的大多数人有两个共同点:

  • 错误表示常数
  • 原因是相关的2个或更多(即第三方JAR文件)版本不同
版本不匹配也可能导致错误:

java.lang.NoSuchFieldError:默认值

因为在3.17之前的版本中存在class
org.apache.poi.ss.formula.udf.UDFFinder
常量,但现在(4.0及更新版本)已被弃用。也就是说,它确实如此,甚至更高

运行时出现的问题: If语句
新建XSSFWorkbook()(在第13行)使用依赖项(JAR)
poioxml
执行,然后它使用核心依赖项(JAR)
poi
UDFFinder
,并因此尝试查找常量字段
DEFAULT
(可能不存在,因为版本不匹配)

因此,我认为,您的Apache
poi
poi ooxml
版本不匹配(不同级别)。 看

解决方案:匹配版本! 如果正在使用,请确保POM上有以下依赖项:


org.apache.poi

最小工作解决方案(如上)说明: 相反,只需将文件路径放入所需文件夹和文件,如此处的常量
file\u path\u WIN
。 我看到了,你在哪里做的

假设您修复了您的问题,并在此处解决了版本与POI依赖项的不匹配问题,则上述解决方案应编译并写出所需的Excel工作簿(.xlsx),其中包含sheet
FirstExcelSheet
和cell
A1
,其中包含string
Tester

另见 请参阅本教程。

java.lang.NoSuchFieldError的原因
如果您搜索StackOverflow中的标签,您将发现许多类似的问题。他们中的大多数人有两个共同点:

  • 错误表示常数
  • 原因是相关的2个或更多(即第三方JAR文件)版本不同
版本不匹配也可能导致错误:

java.lang.NoSuchFieldError:默认值

因为在3.17之前的版本中存在class
org.apache.poi.ss.formula.udf.UDFFinder
常量,但现在(4.0及更新版本)已被弃用。也就是说,它确实如此,甚至更高

运行时出现的问题: If语句
新建XSSFWorkbook()(在第13行)使用依赖项(JAR)
poioxml
执行,然后它使用核心依赖项(JAR)
poi
UDFFinder
,并因此尝试查找常量字段
DEFAULT
(可能不存在,因为版本不匹配)

因此,我认为,您的Apache
poi
poi ooxml
版本不匹配(不同级别)。 看

解决方案:匹配版本! 如果正在使用,请确保POM上有以下依赖项:


org.apache.poi

最小工作解决方案(以上)解释: 相反,只需将文件路径放入所需文件夹和文件,如此处的常量
file\u path\u WIN
。 我看到了,你在哪里做的

假设您修复了您的问题,并在此处解决了版本与POI依赖项的不匹配问题,则上述解决方案应编译并写出所需的Excel工作簿(.xlsx),其中包含sheet
FirstExcelSheet
和cell
A1
,其中包含string
Tester

另见
请参阅上的本教程。

,因为将其放在注释中是不可行的。能否尝试删除pom.xml中的这部分代码并重试

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11</version>
</dependency>

org.apache.poi
poi ooxml
3.11
基于粗略的阅读。它已在以下代码中定义

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.1</version>
</dependency>

org.apache.poi
poi ooxml
4.1.1

,因为将其放在注释中是不可行的。能否尝试删除pom.xml中的这部分代码并重试

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11</version>
</dependency>

org.apache.poi
poi ooxml
3.11
基于粗略的阅读。它已在以下代码中定义

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.1</version>
</dependency>

org.apache.poi
poi ooxml
4.1.1

pom.xml中唯一需要的apache poi依赖项是

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0</version>
</dependency>

org.apache.poi
poi
5
org.apache.poi
poi ooxml
5
请删除其他


当我删除其他代码时,我的代码正常工作。

pom.xml中唯一需要的apache poi依赖项是

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0</version>
</dependency>

org.apache.poi
poi
5
org.apache.poi
poi ooxml
5
请删除其他


当我删除其他代码时,我的代码起作用了。

能否请您在代码中标记编号为
18
的行(文件
ExcelWriter.java
)。这似乎是导致异常的原因。有什么理由扩展ExcelReader吗?我刚刚试着运行你的代码。我唯一更改的部分是将Excel Reader完全删除,然后明确给出文件的路径。这对我来说很好。@hc\u dev标记编号为18的行?请问你划18号线是什么意思?谢谢,只是让人困惑。@MehulGayate你说得对,毫无理由,我应该先仔细检查一下,但我想知道是不是因为扩展了ExcelReader导致了异常?谢谢你,我希望我能理解并记住t