java.lang.NoSuchFieldError:默认值
我目前正在使用vscode和apachepoi,创建了一个程序来自动创建一个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
.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文件)版本不同李>
org.apache.poi.ss.formula.udf.UDFFinder
常量,但现在(4.0及更新版本)已被弃用。也就是说,它确实如此,甚至更高
运行时出现的问题:
If语句新建XSSFWorkbook()代码>(在第13行)使用依赖项(JAR)poioxml
执行,然后它使用核心依赖项(JAR)poi
的UDFFinder
,并因此尝试查找常量字段DEFAULT
(可能不存在,因为版本不匹配)
因此,我认为,您的Apachepoi
和poi ooxml
版本不匹配(不同级别)。
看
解决方案:匹配版本!
如果正在使用,请确保POM上有以下依赖项:
org.apache.poi
最小工作解决方案(如上)说明:
相反,只需将文件路径放入所需文件夹和文件,如此处的常量file\u path\u WIN
。
我看到了,你在哪里做的
假设您修复了您的问题,并在此处解决了版本与POI依赖项的不匹配问题,则上述解决方案应编译并写出所需的Excel工作簿(.xlsx),其中包含sheetFirstExcelSheet
和cellA1
,其中包含stringTester
另见
请参阅本教程。java.lang.NoSuchFieldError的原因
如果您搜索StackOverflow中的标签,您将发现许多类似的问题。他们中的大多数人有两个共同点:
- 错误表示常数
- 原因是相关的2个或更多(即第三方JAR文件)版本不同李>
版本不匹配也可能导致错误:
java.lang.NoSuchFieldError:默认值
因为在3.17之前的版本中存在classorg.apache.poi.ss.formula.udf.UDFFinder
常量,但现在(4.0及更新版本)已被弃用。也就是说,它确实如此,甚至更高
运行时出现的问题:
If语句新建XSSFWorkbook()代码>(在第13行)使用依赖项(JAR)poioxml
执行,然后它使用核心依赖项(JAR)poi
的UDFFinder
,并因此尝试查找常量字段DEFAULT
(可能不存在,因为版本不匹配)
因此,我认为,您的Apachepoi
和poi ooxml
版本不匹配(不同级别)。
看
解决方案:匹配版本!
如果正在使用,请确保POM上有以下依赖项:
org.apache.poi
最小工作解决方案(以上)解释:
相反,只需将文件路径放入所需文件夹和文件,如此处的常量file\u path\u WIN
。
我看到了,你在哪里做的
假设您修复了您的问题,并在此处解决了版本与POI依赖项的不匹配问题,则上述解决方案应编译并写出所需的Excel工作簿(.xlsx),其中包含sheetFirstExcelSheet
和cellA1
,其中包含stringTester
另见
请参阅上的本教程。,因为将其放在注释中是不可行的。能否尝试删除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