2013-08-01 6 views
1

아래 코드를 사용하여 apache poi를 사용하여 Excel 파일에서 명명 된 범위를 만들려고합니다.java.lang.NoSuchMethodError : org.apache.poi.ss.formula.FormulaParser.parse

private static void createNamedRangesForGeneratedValues(final XSSFWorkbook workBook,     final String name, final String cellAreaRange) { 
     final Name cellRangeName = workBook.createName(); 
     cellRangeName.setNameName(name); 

     final String reference = name + cellAreaRange; // "!A1:C5"; // area reference 
     cellRangeName.setRefersToFormula(reference); 

그러나이 단계에서는 다음을 예외로합니다. cellRangeName.setRefersToFormula(reference);.

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.formula.FormulaParser.parse(Ljava/lang/String;Lorg/apache/poi/ss/formula/FormulaParsingWorkbook;II)[Lorg/apache/poi/hssf/record/formula/Ptg; 
    at org.apache.poi.xssf.usermodel.XSSFName.setRefersToFormula(XSSFName.java:195) 
    at test.java.ExcelSheetDropDownDataHandler.createNamedRangesForGeneratedValues(ExcelSheetDropDownDataHandler.java:186) 
    at test.java.ExcelSheetDropDownDataHandler.generateCountryData(ExcelSheetDropDownDataHandler.java:93) 
    at test.java.ExcelSheetDropDownDataHandler.generateData(ExcelSheetDropDownDataHandler.java:64) 
    at test.java.ExcelSheetDropDownDataHandler.createDataTab(ExcelSheetDropDownDataHandler.java:50) 
    at test.java.ExcelSheetDropDownDataHandler.main(ExcelSheetDropDownDataHandler.java:205) 

누구나 제안 할 수 있습니다. 이유가 무엇일까요?

+0

은 오래된 바이너리처럼 들리지만, 병 (이름 및 버전)을 사용하고 계십니까? – morgano

+0

안녕하세요, plz jar 버전을 찾으십시오. POI 3.9, poi-ooxml-3.5, xmlbeans.jar -2.6 –

답변

5

잘못 일치하는 병이있는 것 같습니다. 귀하의 의견에서 당신은 POI 3.9 .... poi-ooxml-3.5 있다고합니다. 은 일치하는 병이 있으므로에 POI-3.9와 POI-OOXML-3.9가 있어야합니다. 프로젝트의 다른 부분의 새 항아리와 오래된 항아리를 섞거나 일치시킬 수는 없습니다.

항아리가 어디에서 왔는지 확인하는 데 도움이 필요하면 (예 : 앱 프레임 워크에 오래된 애플리케이션이 번들되어 있음) this POI FAQ entry을 참조하십시오. Apache POI의 다른 부분에 대한 종속성을 확인하려면 Components page

을 참조하십시오. POI 병을 모두 3.9로 최종 수정하거나 모두를 3.10 베타 1 (최신 버전은 2013 년 7 월)

관련 문제