java.lang.NoSuchMethodError:org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V
您好,我第一次尝试使用apache.poi将xlsx转换为pdf,在我添加一些需要使用3.17版本的代码(将docx转换为pdf)之前,它工作得非常好。之后,当我试图转换xlsx时,我得到了这个错误 java.lang.NoSuchMethodError:org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V 我不知道发生了什么。无论如何,这是我的一些代码来获取文件java.lang.NoSuchMethodError:org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V,java,pdf,itext,apache-poi,xlsx,Java,Pdf,Itext,Apache Poi,Xlsx,您好,我第一次尝试使用apache.poi将xlsx转换为pdf,在我添加一些需要使用3.17版本的代码(将docx转换为pdf)之前,它工作得非常好。之后,当我试图转换xlsx时,我得到了这个错误 java.lang.NoSuchMethodError:org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V 我不知道发生了什么。无论如何,这是我的一些代码来获取文件 ByteArrayOutputS
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OPCPackage pkg = OPCPackage.open(file);
XSSFWorkbook xls = new XSSFWorkbook(pkg);
XSSFSheet worksheet = xls.getSheetAt(0);
OPCPackage打开文件(InputStream)时出错。请问有人能帮我吗
Lib:poi 3.17和所有依赖项,itextpdf 5.5.13请检查您的依赖项的实际版本(例如使用
mvn依赖项:树
)
我认为poi 3.17和itextpdf 5.5.13没有问题。
通过以下pom的单元测试
package stackoverflow.q59892610;
import org.junit.Rule;
import org.junit.Test;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.rules.TemporaryFolder;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.UUID;
import static org.apache.poi.xssf.usermodel.XSSFWorkbookType.XLSX;
import static org.junit.Assert.*;
public class PoiTest
{
@Rule
public TemporaryFolder folder= new TemporaryFolder(new File("target"));
@Test
public void xlsTest() throws Exception
{
File file = new File(folder.getRoot(), UUID.randomUUID() + ".xlxs");
String cellValue = UUID.randomUUID().toString();
try (XSSFWorkbook xls = new XSSFWorkbook(XLSX)) {
xls.createSheet("new sheet").createRow(0).createCell(0).setCellValue(cellValue);
try(OutputStream out = new FileOutputStream(file)) {xls.write(out);}
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XSSFWorkbook xls = new XSSFWorkbook(file);
XSSFSheet worksheet = xls.getSheetAt(0);
assertEquals("cell value mismatch", cellValue, worksheet.getRow(0).getCell(0).getStringCellValue());
}
}
4.0.0
栈溢出
poi记录器
罐子
1.0-快照
poi记录器
http://maven.apache.org
UTF-8
3.17
5.5.13
4.13
朱尼特
朱尼特
${junit版本}
测试
org.apache.poi
poi
${poi版本}
com.itextpdf
itextpdf
${itextpdf版本}
org.apache.poi
poi ooxml
${poi版本}
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
1.8
请检查您的依赖项的实际版本(例如,使用mvn依赖项:tree
)
我认为poi 3.17和itextpdf 5.5.13没有问题。
通过以下pom的单元测试
package stackoverflow.q59892610;
import org.junit.Rule;
import org.junit.Test;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.rules.TemporaryFolder;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.UUID;
import static org.apache.poi.xssf.usermodel.XSSFWorkbookType.XLSX;
import static org.junit.Assert.*;
public class PoiTest
{
@Rule
public TemporaryFolder folder= new TemporaryFolder(new File("target"));
@Test
public void xlsTest() throws Exception
{
File file = new File(folder.getRoot(), UUID.randomUUID() + ".xlxs");
String cellValue = UUID.randomUUID().toString();
try (XSSFWorkbook xls = new XSSFWorkbook(XLSX)) {
xls.createSheet("new sheet").createRow(0).createCell(0).setCellValue(cellValue);
try(OutputStream out = new FileOutputStream(file)) {xls.write(out);}
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XSSFWorkbook xls = new XSSFWorkbook(file);
XSSFSheet worksheet = xls.getSheetAt(0);
assertEquals("cell value mismatch", cellValue, worksheet.getRow(0).getCell(0).getStringCellValue());
}
}
4.0.0
栈溢出
poi记录器
罐子
1.0-快照
poi记录器
http://maven.apache.org
UTF-8
3.17
5.5.13
4.13
朱尼特
朱尼特
${junit版本}
测试
org.apache.poi
poi
${poi版本}
com.itextpdf
itextpdf
${itextpdf版本}
org.apache.poi
poi ooxml
${poi版本}
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
1.8
这可能是相关的:不要混合来自不同版本的POI罐。看见我怀疑您在类路径中有另一个版本的poi-3.17*.jar
和另一个poi-?*.jar
。@AxelRichter没有,AxelI怀疑您有。请尝试诊断您的org.apache.poi.util.POILogger
来自何处。这可能与此相关:不要混合来自不同版本的poi JAR。看见我怀疑您在类路径中有另一个版本的poi-3.17*.jar
和另一个poi-?*.jar
。@AxelRichter没有,AxelI怀疑您有。请尝试诊断您的org.apache.poi.util.POILogger
来自哪里。