4
votes

Comment réparer "L'import org.apache.poi ne peut pas être résolu"

Je souhaite utiliser Apache-POI dans mon code, mais je reçois un message d'erreur L'import org.apache.poi ne peut pas être résolu lors de la déclaration d'importation import org.apache.poi.xssf.usermodel.XSSFWorkbook;

Je suis un débutant avec un Visual Studio Code v1.30.2 fraîchement configuré, Maven 3.6.0, Java JRE 1.8.0_201.

J'ai activé les extensions suivantes: Débogueur pour Java, 0.16.0 Visualiseur de dépendances Java, 0.3.0 Pack d'extension Java, 0.5.0 Lanceur de tests Java, 0.14.0 Prise en charge du langage pour Java (TM), 0.37.0 Maven pour Java, 0.14.0

J'ai entré ces instructions dans le pom.xml dans la section des dépendances:

C:\Users\MYUSERNAME\Documents\Java\project2>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< MYNAME.project2:project2 >---------------------
[INFO] Building project2 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ project2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\MYUSERNAME\Documents\Java\project2\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ project2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Users\MYUSERNAME\Documents\Java\project2\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[12,1] package org.apache.poi.ss.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[13,37] package org.apache.poi.xssf.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[14,37] package org.apache.poi.xssf.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[46,9] cannot find symbol
  symbol:   class XSSFWorkbook
  location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[46,45] cannot find symbol
  symbol:   class XSSFWorkbook
  location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[48,9] cannot find symbol
  symbol:   class XSSFSheet
  location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[55,13] cannot find symbol
  symbol:   method setCellValue(java.lang.String)
  location: variable cell of type com.google.common.collect.Table.Cell
[INFO] 7 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.549 s
[INFO] Finished at: 2019-01-30T09:41:45+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project2: Compilation failure: Compilation failure:
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[12,1] package org.apache.poi.ss.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[13,37] package org.apache.poi.xssf.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[14,37] package org.apache.poi.xssf.usermodel does not exist
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[46,9] cannot find symbol
[ERROR]   symbol:   class XSSFWorkbook
[ERROR]   location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[46,45] cannot find symbol
[ERROR]   symbol:   class XSSFWorkbook
[ERROR]   location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[48,9] cannot find symbol
[ERROR]   symbol:   class XSSFSheet
[ERROR]   location: class MYNAME.project2.App
[ERROR] /C:/Users/MYUSERNAME/Documents/Java/project2/src/main/java/MYNAME/project2/App.java:[55,13] cannot find symbol
[ERROR]   symbol:   method setCellValue(java.lang.String)
[ERROR]   location: variable cell of type com.google.common.collect.Table.Cell
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/

J'ai aussi essayé avec d'autres Versions de POI, par exemple 3.10-FINAL.

Je suis trop nouveau dans Java, Maven et VSCode pour être sûr d'avoir inclus toutes les informations nécessaires pour pointer vers une solution. Aidez-moi :)

J'ai exécuté mvn compile , avec ce résultat:

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.0.1</version>
</dependency>

J'ai également collé la sortie complète de mvn -X compile ici

I J'ai collé mon POM.XML ici

Dans mon dossier local C: \ Users \ MYUSERNAME.m2 \ repository \ org \ apache il n'y a pas de sous-dossier poi.


6 commentaires

C'est étrange! Lorsque j'ai téléchargé le fichier JAR correspondant à poi-ooxml 4.0.1 depuis Maven Central, la classe que vous essayez d'importer est présente et contient ce package. Avez-vous vérifié le fichier JAR que maven a téléchargé dans votre arborescence locale "m2repository"? Essayez d'examiner le fichier JAR pour voir s'il est complet / correct.


Dans mon dossier local C: \ Users \ MYUSERNAME \ .m2 \ repository \ org \ apache il n'y a pas de sous-dossier poi .


pourriez-vous s'il vous plaît poster votre pom.xml complet


OK - donc d'une manière Maven n'a pas téléchargé les artefacts dont il a besoin. Courez-vous déconnecté d'Internet? Ou derrière un pare-feu qui bloque l'accès Internet? Avez-vous besoin de configurer les paramètres de proxy Maven? Essayez d'exécuter avec l'option -X pour voir s'il tente de télécharger ...


@ayZagen J'ai ajouté le POM.xml à ma question.


@StephenC J'ai ajouté la sortie de mvn -X compile à mon message. Je l'ai parcouru et je ne vois aucun signe que Maven essaie de télécharger les fichiers. Il n'y a que [ERROR] / C: / Users / MYUSERNAME / Documents / Java / project3 / src / main / java / M‌ YNAME / project2 / App.j‌ ava: [12,1] package org.apache. poi.ss.usermodel n'existe pas


3 Réponses :


0
votes

MODIFIER Essayez de déplacer les dépendances poi vers la balise racine dependencies .

Exécutez mvn compile

La première fois que vous exécutez cette commande (ou toute autre), Maven besoin de télécharger tous les plugins et les dépendances connexes dont il a besoin remplir la commande. À partir d'une installation propre de Maven, cela peut prendre un certain temps (dans la sortie ci-dessus, cela a pris près de 4 minutes). Si vous exécutez à nouveau la commande, Maven aura maintenant ce dont il a besoin, donc il n'aura pas besoin de télécharger quoi que ce soit de nouveau et pourra exécuter le commande beaucoup plus rapidement.

Maven: Premiers pas


1 commentaires

La première fois que j'exécute mvn compile , j'obtiens BUILD FAILURE, voir les détails dans ma question mise à jour.



0
votes

Selon le journal des erreurs, il y a 2 possibilités

  1. < Problème de réseau . Maven n'est pas en mesure de télécharger les fichiers jar à partir de son référentiel, il n'y a donc pas de bibliothèque POI dans le dossier .m2
    Solution: vérifiez le réseau / Internet.
  2. <₹ Fichiers corrompus . Cela se produit si le ou les fichiers sont corrompus.
    Solution: supprimez le dossier org.apache.poi dans le dossier .m2 . le clic droit sur le projet (depuis Eclipse) -> Maven -> Mettre à jour le projet .
    Puis clean et refresh projet, puis exécutez la commande Maven clean install

0 commentaires

2
votes

Merci à tous les contributeurs, et en particulier à @ayZagen (qui m'a pointé vers le pom.xml).

Il s'avère que j'avais inséré les dépendances pour poi dans la section dépendances de

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>

plutôt que dans la bonne section .

Quand j'ai déplacé mes dépendances vers la bonne section , maven télécharge POI et cette partie du code se compile.

Désolé d'avoir pris le temps des gens sur une erreur triviale. Merci de m'avoir aidé à découvrir et à poser les bonnes questions! Ce fut une expérience très positive!


0 commentaires