NoSuchMethodError dans le thread principal lors de la lecture de xlsx à l'aide d'apache poi
mon code est
[...]
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
public class ExcelRead {
public static void main( String [] args ) {
try {
File excel = new File("Book1.xlsx");
FileInputStream fis = new FileInputStream(excel);
XSSFWorkbook book = new XSSFWorkbook(fis);
XSSFSheet sheet = book.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while( rows.hasNext() ) {
HSSFRow row = (HSSFRow) rows.next();
System.out.println("\n");
Iterator cells = row.cellIterator();
while( cells.hasNext() ) {
HSSFCell cell = (HSSFCell) cells.next();
if(HSSFCell.CELL_TYPE_NUMERIC==cell.getCellType())
System.out.print( cell.getNumericCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_STRING==cell.getCellType())
System.out.print( cell.getStringCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_BOOLEAN==cell.getCellType())
System.out.print( cell.getBooleanCellValue()+" " );
else
if(HSSFCell.CELL_TYPE_BLANK==cell.getCellType())
System.out.print( "BLANK " );
else
System.out.print("Unknown cell type");
}
}
} catch ( IOException ex ) {
ex.printStackTrace();
}
}
}
les pots que j'ai ajouté sont
- poi-3.9.jar
- poi-ooxml-3.9.jar
- poi-ooxml-schemas-3.7.jar
- xmlbeans-2.3.0.jar
- dom4j-1.6.1.jar
l'exception est
Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.stream.XMLEventFactory.newFactory()Ljavax/xml/stream/XMLEventFactory;
at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:45)
at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161)
at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141)
at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:37)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:87)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:254)
at com.symplocus.ExcelRead.main(ExcelRead.java:26)
Java version utilisez-vous?
java standard edition 6
le code fonctionne bien avec jdk7 ........
java standard edition 6
le code fonctionne bien avec jdk7 ........
OriginalL'auteur rajasekhar | 2014-11-11
Vous devez vous connecter pour publier un commentaire.
Les versions récentes de
poi-ooxml
nécessitent l'utilisation d'au moinsjava 6
. La méthode en question n'a été ajouté depuisjava 6
. Envisager de mettre à niveau votrejava
version.De la officiel docs,
*C'est moi qui souligne.
Depuis que la question a été édité, je suis en précisant le construire cette méthode a été ajouté:
Donc un minimum de cette version doit être utilisée dans OP.
Est votre runtime
6
ainsi?oui .. le moteur d'exécution est également de 6
C'est étrange. J'ai toujours suspect en cours d'exécution sur
java 5
ou moins. Quelle génération dejava 6
êtes-vous sur? Juste mettre cette ligne avant la ligne où l'erreur est levée.System.out.println(Runtime.class.getPackage().getImplementationVersion());
et coller la sortie de ici.désolé, je pense que j'ai eu tort, il montre 1.6.0_05 quelle version je dois courir..
OriginalL'auteur mystarrocks
Cela indique généralement que vous faites glisser dans obsolète Analyseur XML, interfaces, par exemple, par le biais de certains transitoire de la dépendance d'une ancienne xml version de l'api ou de la vétusté des xerces pot, qui n'est généralement pas nécessaire, pas plus que la version 6 de Java fournit l'ensemble de l'analyse XML de la fonctionnalité de la boîte.
Voir cette discusion pour plus de détails.
OriginalL'auteur centic
J'ai rencontré exactement le même problème que vous.
et j'ai trouvé les fichiers jar suivants doivent être utilisés pour résoudre le programme:
poi-bin-3.8.zip
opencsv-2.3.jar
poi-ooxml-3.8.jar
poi-ooxml-schemas-3.8.jar
xmlbeans-2.3.0.jar
dom4j-1.6.1.jar
nouvelle version apportera que des ennuis.
OriginalL'auteur user4521284