我目前正在使用vscode和apachepoi,创建了一个程序来自动创建<code>。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)
嗯.xml(依赖):
<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对我来说是新的,请帮助我,我会非常感激,非常感谢。
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>
请删除其他。
当我删除其他代码时,我的代码工作正常。
因为在评论中加入这一点是不可行的。你能尝试删除pom中的这部分代码吗。xml并重试?
<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>
如果您在StackOverflow中搜索标签nosuchfield dnor,您会发现很多类似的问题。他们中的大多数都有2个共同点:
此版本不匹配也可能导致错误:
java.lang.NoSuchFieldError:默认
因为类<code>org.apache.poi.ss.formula.udf的常量<code>DEFAULT</code>。UDFFinder</code>存在于3.17之前的版本中,但现在(4.0及更高版本)已被弃用。这意味着,它在4.0及更高版本中不存在。
运行时的问题:如果语句new XSSFWorkbook();
(在第13行)使用依赖项(JAR)poi-ooxml
执行,则它使用核心依赖项(JAR)poi
的UDFFinder
,因此尝试查找CONSTANT字段DEFAULT
(可能不存在,因为版本不匹配)。
所以我想,您的Apachepoi
和poi-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,请注意所有apachepoiJAR文件的文件名,并确保版本相同。
如果您只想将新创建的Excel-Workbook写入文件,例如/tmp/MyFirstExcel.xlsx
(在Linux)或C:/User/Sonic/MyFirstExcel.xlsx
(在Windows上,假设您的Windows-User是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
扩展。因此,为了简单起见,您可以省略扩展ExcelReader
,声明ExcelReadereR=newExcelReadr()
和用法eR。getImpoFileLink()
获取文件路径。否则,请将类<code>ExcelReader</code>的源代码发布到您的问题中,使其成为最小的可复制示例。
最小工作解决方案(上图)解释:相反,只需将文件路径放入所需的文件夹和文件,就像此处的常量FILE_PATH_WIN
一样。几个小时前,我看到了你的相关问题,你在哪里这样做的。
假设您在此处修复了其他问题,并且在此处解决了与POI依赖项的版本不匹配问题,那么上面给出的解决方案应该可以编译并写出所需的Excel工作簿(。xlsx)与工作表< code>FirstExcelSheet和单元格< code>A1包含字符串< code>Tester。
请参阅本教程 关于 Apache POI – 在 Java 中读取和写入 Excel 文件。
嗨,又是我,我现在在启动我的应用程序时出现了这个错误: 我找不到原因,我确切地说这是一个带有模块的maven项目,所以我将所有依赖项放在父模块pom文件中: 这是我的应用程序类: 我觉得问题出在pom,但是找不到在哪里。
我有一个MavenJava项目,它使用HttpClient来执行HTTP请求。在我的本地JavaWeb Server上,一切正常。但是在我将其部署到SAP Hana云平台后,我收到以下错误: 我的依赖是这样的: 根据这个问题,java.lang.NoSuchFieldError:org.apache.http.message.basicInfo。在Java应用程序中的Mashape Unirest
我已经在我的Android项目中集成了一个第三方库。该库以. aar文件的形式提供。 它的实现是一个简单的单行程序,它在我的MainActivity中创建了一个customdialog。 但每当它试图创建对话框时,我的应用程序就会崩溃 我在一个新的空android项目中实现了这个库,它按计划工作。所以看起来和我的项目有冲突。 我在另一篇博文(这里)中读到,当project和library意外地将相
我得到了这个错误: 线程“main”Java.lang.NosuchFielderRror:calificacion.main处的num1异常(problema_3.Java:17) 在这个简单的终端Java程序上键入第一个值后: 另一方面,这一个运行良好,我使用相同的输入法在这两个: 提前道谢。
我试图通过jmeter在jenkins上运行一些junit测试,以进行一些GAE成本测试。至少可以说,这确实是一个令人头疼的问题。就目前所发生的事情而言,我一直努力争取得到这个问题,我希望这将是最后一次。一些要点: null
我使用Apache中的HttpClient组件来执行以下简单的程序,并看到以下异常: 我正在使用 httpclient-4.3.3.jar httpcore-4.3.2.jar 有什么想法吗?