java.lang.NoSuchFieldError:默认

FlashSonic526:

我当前正在使用vscode和apache poi,创建了一个程序来自动创建.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)

pom.xml(dependency):

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

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

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

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>3.1.0</version>
</dependency>

Apache POI对我来说是新手,请帮助我,我将非常感谢,非常感谢。

hc_dev:

原因 java.lang.NoSuchFieldError

如果在StackOverflow中搜索标签您会发现很多类似的问题。他们中的大多数有两个共同点:

  • 该错误表明找不到常量字段
  • 原因是相关的2个或更多依赖项(即第三方JAR文件)具有不同的版本

版本不匹配也可能导致您的错误:

java.lang.NoSuchFieldError:默认

由于DEFAULTclass 的常量org.apache.poi.ss.formula.udf.UDFFinder在3.17之前的版本中存在,但现在(版本4.0和更高版本)已被弃用意味着它在4.0及更高版本不存在

运行时出现问题:如果new XSSFWorkbook();使用依赖项(JAR)执行语句(第13行)poi-ooxml,则它使用UDFFinder核心依赖项(JAR)的a poi,因此尝试查找CONSTANT字段DEFAULT(由于版本不匹配,该字段可能不存在)。

因此,我想您的Apache版本poipoi-ooxml并不匹配(不是同一级别)。使用Apache Poi看到版本不匹配的类似问题

解决方案:匹配版本!

如果您使用的是Maven,请确保您对POM具有以下依赖关系:

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

至少两个版本必须相同

如果要手动管理类路径和JAR,请注意所有apache-poi JAR文件的文件名,并确保版本相同。

代码似乎非常接近工作

如果您只想将新创建的Excel-Workbook写入文件,例如/tmp/MyFirstExcel.xlsx(在Linux上)或C:/Users/Sonic/MyFirstExcel.xlsx(在Windows上,假设您的Windows用户是Sonic),则使用以下代码:

public class ExcelWriter {
    static final String FILE_PATH_LINUX = "/tmp/MyFirstExcel.xlsx";
    static final String FILE_PATH_WIN = "C:/Users/Sonic/MyFirstExcel.xlsx"; // note: replace Window's backslash '\' by either double-backslash '\\' or single forward-slash '/'

    public static void main(String[] args) throws FileNotFoundException, IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("FirstExcelSheet"); // first sheet create
        XSSFRow row = sheet.createRow(0); // first row create - A
        XSSFCell cell = row.createCell(0); // first cell create - A-1        
        cell.setCellValue("Tester"); // give data into A-1 cell

        // Output as an excel file
        workbook.write(new FileOutputStream(FILE_PATH_WIN));
        workbook.close();
    }
}

类的用法不清楚ExcelReader没有明显的理由可以从ExcelReader因此,为了简单起见,您可以省略extends ExcelReader,声明ExcelReader eR = new ExcelReader();和用法eR.getImpoFileLink()来获取文件路径否则,请将class的源代码发布ExcelReader到您的问题中,以使其成为最小的可复制示例

最小的工作解决方案(上述)说明:相反,只需将文件路径放入所需的文件夹和文件,如此处的常量FILE_PATH_WIN几个小时前我看到了您的相关问题,您在哪里做了。

假设您在此处解决了其他问题,并在此处解决了具有POI依赖项版本不匹配的问题,则上面给出的解决方案应编译并用表格FirstExcelSheetA1包含string的单元格写出所需的Excel工作簿(.xlsx)Tester

也可以看看

请参阅有关Apache POI的本教程-用Java读写Excel文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

抖动错误:java.lang.NoSuchFieldError的PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING

java.lang.NoSuchFieldError的:ACCEPT_CASE_INSENSITIVE_VALUES

“java.lang.NoSuchFieldError的:超级”异常 - 错误的编译器?

带有弹性搜索的Spring Boot导致java.lang.NoSuchFieldError:IGNORE_DEPRECATIONS

HTTPClient示例-线程“主”中的异常java.lang.NoSuchFieldError:INSTANCE

线程“主”中的异常java.lang.NoSuchFieldError:TRACE

春季:java.lang.NoSuchFieldError:IMPORT_BEAN_NAME_GENERATOR

Spring 3.1 entityManagerFactory java.lang.NoSuchFieldError:NULL错误

NoSuchFieldError Java

java.lang.NoSuchFieldError:INSTANCE

响应式Spring Boot-java.lang.NoSuchFieldError:DEFAULT_SHUTDOWN_QUIET_PERIOD

线程“主”中的异常java.lang.NoSuchFieldError:JAVA_VENDOR

Eclipse无法启动:java.lang.NoSuchFieldError:url

java.lang.NoSuchFieldError:反思

java.lang.NoSuchFieldError:来自Linux终端的带有twilio的DEF_CONTENT_CHARSET

更改类后java.lang.NoSuchFieldError

JSON解析器-java.lang.NoSuchFieldError:defaultReader

Proguard应用程式当机(造成原因:java.lang.NoSuchFieldError:否“ Lcom / facebook / jni / HybridData)

如何解决此错误:java.lang.NoSuchFieldError:UTF_32BE?

适用于ssm的aws Java sdk提供了java.lang.NoSuchFieldError:SIGNING_REGION

JPA:QUERY DSL错误:java.lang.NoSuchFieldError:LIKE_IC

NullnessChecker错误:java.lang.NoSuchFieldError:释放

ScalaFx MouseEvent:java.lang.NoSuchFieldError:返回

使用ScalaTest时出现java.lang.NoSuchFieldError

正在创建CA ...意外错误java.lang.NoSuchFieldError:BasicConstraints

java.lang.NoSuchFieldError:IBM_JAVA

java.lang.NoSuchFieldError:Apache HttpComonents和Wildfly中的实例

HttpClientBuilder-java.lang.NoSuchFieldError:INSTANCE

由第3方模块引起的java.lang.NoSuchFieldError