Java - Maven - dependency versie forceren

Pagina: 1
Acties:

Vraag


  • Red devil
  • Registratie: December 1999
  • Laatst online: 19:14
Hai

Ik probeer een SXSSFWorkbook te saven echter ik krijg de volgende melding:
java.lang.IllegalArgumentException: InputStream of class class org.apache.commons.compress.archivers.zip.ZipFile$1 is not implementing InputStreamStatistics.
Schijnt een bekend probleem te zijn maar ik kom er niet echt uit.

Heb vervolgens in Eclipse de common--compress library ge-excluded in de maven, vervolgens krijg ik dan dit in de pomp.xml
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</exclusion>
</exclusions>
Als ik dan weer test, krijg ik netjes
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:64)
at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:147)
at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:34)
at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getInputStream(ZipFileZipEntrySource.java:63)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.injectData(SXSSFWorkbook.java:398)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:959)
Wat je denk ik zou verwachten. Vervolgens voeg ik de common-compress dependency toe aan pom.xml:
<!-- https://mvnrepository.com....commons/commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
Alleen krijg ik wederom dezelfde eerste melding:
java.lang.IllegalArgumentException: InputStream of class class org.apache.commons.compress.archivers.zip.ZipFile$1 is not implementing InputStreamStatistics.
at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:65)
at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:147)
at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:34)
at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getInputStream(ZipFileZipEntrySource.java:63)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.injectData(SXSSFWorkbook.java:398)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:959)
Volgens mij exclude ik die dependency niet goed genoeg, iemand met een tip? :-)

Alle reacties


  • Hopscotch
  • Registratie: September 2015
  • Laatst online: 28-09-2021
Je kan met
code:
1
mvn dependency:tree

zien welke dependencies allemaal geresolved worden. Eventueel met
code:
1
-Dincludes=commons-compress

om die te isoleren.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 19:14
Hopscotch schreef op zaterdag 1 augustus 2020 @ 20:45:
Je kan met
code:
1
mvn dependency:tree

zien welke dependencies allemaal geresolved worden. Eventueel met
code:
1
-Dincludes=commons-compress

om die te isoleren.
Thanks. Lijkt op dezelfde output die gegenereerd wordt door de "Dependency Hierarchy" van Eclipse.
Daar staat de versie netjes tussen, verder geen gekke andere dingen. Heb zelfs al mijn niet gebruikte jars eruit gegooid en alles opgeruimd. Argh. Frustrerend dit soort dingen.

[edit]
Nog irritanter. Heb dezelfde pom.xml content in een ander projectje gegooid en daar een test Excel gemaakt.
Werkt gewoon. Dezelfde test Excel code werkt niet in mijn oorspronkelijke code.

[edit2]
Het werkt. Ik had nog 2 verwijzingen naar externe JAR files. Besloten om die ook maar om te zetten naar een maven entry. Toen ik de laatste externe jar referentie had weggehaald... werkte het ineens. Raar...

[ Voor 26% gewijzigd door Red devil op 01-08-2020 22:14 ]