Je veux lire le fichier Excel mais donne
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/xmlbeans/XmlObject
at ExcelReader.main(ExcelReader.Java:32)
Caused by: Java.lang.ClassNotFoundException: org.Apache.xmlbeans.XmlObject
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
aidez-moi, s'il vous plaît. Au début, ouvrez le fichier .xlsx, puis donnez la première feuille. à la fin, imprimer les données du fichier Excel sur la console. Ps: j'ajoute poi-ooxml-3.9-20121203.jar à mon projet.
import Java.io.File;
import Java.io.FileInputStream;
import javax.swing.text.html.HTMLDocument.Iterator;
import org.Apache.poi.hssf.usermodel.HSSFSheet;
import org.Apache.poi.hssf.usermodel.HSSFWorkbook;
import org.Apache.poi.ss.usermodel.Cell;
import org.Apache.poi.ss.usermodel.Row;
import org.Apache.poi.xssf.usermodel.XSSFSheet;
import Java.util.*;
import org.Apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @author mohammad hosein
*
*/
public class ExcelReader {
/**
* @param args
*/
public static void main(String[] args) {
try
{
FileInputStream file = new FileInputStream(new File("E:\\test.xlsx"));
//Get the workbook instance for XLS file
XSSFWorkbook workbook = new XSSFWorkbook (file);
//Get first sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
//Get iterator to all the rows in current sheet
Java.util.Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext())
{
Row row = rowIterator.next();
Java.util.Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println("");
}
}
catch(Exception e)
{
System.out.println("EROR!");
}
//Get iterator to all cells of current row
}
}
Votre code est sans importance. NoClassDefFoundError
survient lorsqu'une classe disponible au moment de la compilation n'est pas disponible au moment de l'exécution. Si vous fournissez un stacktrace complet, ainsi que le nom réel de la classe qui n'a pas été trouvée, des conseils plus précis peuvent être donnés.
Cela se produit généralement lorsque vous exécutez votre code avec une version différente d'un fichier JAR de celle utilisée pour générer le code. Un fichier JAR non fiable peut provenir d’un conteneur d’application ou autre, et être placé plus tôt sur le chemin de classe que votre fichier JAR approprié.
Compte tenu du stacktrace que vous avez ajouté, il vous manque une dépendance transitive de POI Apache: XMLBeans. Vous pouvez manquer ce fichier JAR au moment de l'exécution. Tout dépend de la manière dont vous exécutez votre projet.
Je pense que vous avez oublié de vérifier la bibliothèque dans la propriété de Project.
Cela se produira si tous les fichiers jar poi requis ne sont pas ajoutés. Par conséquent, ma suggestion est d'ajouter tous les fichiers jar requis. Ajoutez les fichiers jar dans les dossiers lib et ooxml-lib avec les fichiers jar poi-3.15-beta2.
Assurez-vous d'avoir ajouté le fichier "commons-collections.jar" dans votre bibliothèque, sinon téléchargez tous les fichiers de bibliothèques à partir d'ici:
http://www-us.Apache.org/dist/poi/release/bin/poi-bin-3.16-20170419.Zip
Après le téléchargement dans le fichier Zip, ouvrez le dossier "lib" et retrouvez le fichier common-collectins.jar à ajouter à votre bibliothèque de projet, comme vous pouvez le voir sur l'image jointe:
La documentation Apache POI fournit une liste complète des différents composants et de leurs dépendances . Vous indiquez que vous souhaitez utiliser poi-ooxml
mais vous semblez avoir oublié la dépendance xmlbeans
(et peut-être d'autres aussi!). Voir la page components pour plus de détails sur ce dont tout a besoin.
Si vous téléchargez une version binaire de Apache POI , toutes les dépendances dont vous pourriez avoir besoin seront contenues dans le paquet. Ajoutez simplement ceux dont vous avez besoin.
Si tout ce travail manuel est un peu difficile pour vous, utilisez quelque chose comme Apache Maven ou Apache Ivy pour gérer vos dépendances à votre place.
Ensuite, vous aurez besoin de tous ces bocaux disponibles deux fois. Une fois pour la compilation, une fois pour la course. Le simple fait de disposer des pots dans Eclipse ou similaire peut ne pas suffire, vous devez également les insérer dans votre environnement de production!
Il y a 2 fichiers jar importants qui viennent avec poi-3.9 qui doivent être inclus car XSSFWorkbook les utilise
xmlbeans * .jar dom4j - *. jar
Ces deux fichiers jars sont présents dans le dossier ooxml-lib et font partie de poi-3.9 * .Zip. Incluez-les dans votre bibliothèque et cela devrait résoudre le problème.
ajoutez xmlbeans-2.3.0.jar dans votre chemin de construction. Il est requis pour xlsx.
NoClassDefFoundError
viendra si une classe était présente au moment de la compilation mais non disponible dans le chemin de classes Java lors de l'exécution. Normalement, vous verrez la ligne ci-dessous dans le journal lorsque vous obtenez NoClassDefFoundError:
Ce site vous donne toutes les raisons pour lesquelles vous obtenez cette erreur 3 façons de la résoudre
J'ai juste eu le même problème. J'avais ajouté les JAR dans le dossier\ooxml-lib\en ajoutant le dossier entier aux bibliothèques (avec Netbeans). et cela a fonctionné.
Comme son nom l'indique, ClassNotFoundException
en Java est une sous-classe de Java.lang.Exception
et est disponible lorsque Java Virtual Machine tente de charger une classe particulière et ne trouve pas la classe demandée dans classpath.
Un autre point important à propos de cette exception est qu’il s’agit d’une exception vérifiée et que vous devez fournir explicitement le traitement des exceptions lors de l’utilisation de méthodes qui peuvent éventuellement lancer ClassNotFoundException
en Java, en utilisant le bloc try-catch ou la clause throws. .
public class ClassNotFoundException
extends ReflectiveOperationException
Lancé lorsqu'une application tente de charger une classe via son nom de chaîne en utilisant:
mais aucune définition de la classe avec le nom spécifié n'a pu être trouvée.
Ajoutez le fichier poi-ooxml-schemas-3.9-20121203.jar
au chemin de classe pour éviter les exceptions.
Vous trouverez sur ces liens
Modifier
Vous manquez les fichiers jar supplémentaires fournis avec les POI. Incluez-les dans votre chemin de classe.
vous devez inclure un fichier jar nommé xmlbeans-x.x.x.jar
obtenir un fichier jar ici .
XMLBeans
En général, NoClassDefFoundError
exception
se produira lorsque le fichier JAR requis n’est pas disponible.
Vérifiez les conditions ci-dessous
Jar file path
par défaut vous avez ajouté poi-ooxml-3.9-20121203.jar
Vérifiez complètement si un fichier jar supplémentaire est requis. Lors de la compilation, le programme Peut nécessiter des fichiers de classe non importés.
poi-3.7-jdk1.4-20110508-rc2
jar est requis.