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

您好,我第一次尝试使用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

我不知道发生了什么。无论如何,这是我的一些代码来获取文件

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
来自哪里。