Missing org.openjdk.jol from imported dependencies in xtable-utilities makes it to fail with NoClassDefFoundError

Aperta Adatta ai principianti
#736 8 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

Una pull request collegata è già stata integrata.

  • #840 di @vinishjail97 — integrata

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
java
Ambito
build-system

Direzione di ricerca

Inizia da xtable-utilities/pom.xml e verifica come è definita la visibilità della dipendenza jol-core e come viene inclusa nell’artefatto bundled. Esegui mvn clean package -DskipTests, quindi avvia il file xtable-utilities_2.12-0.3.0-incubating-bundled.jar generato con i file di configurazione indicati; l’attività è completata quando lo strumento si avvia senza NoClassDefFoundError per org.openjdk.jol.info.GraphLayout.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

0.5.0 bug
Search before asking
  • I had searched in the issues and found no similar issues.
Please describe the bug 🐞

I cloned the repo then moved to 0.3.0-incubating:

git checkout 0.3.0-incubating

then moved to the xtable-utilities folder

cd xtable-utilities

and compiled it

mvn clean package -DskipTests

Then run the tool with proper conf files

java -jar xtable-utilities/target/xtable-utilities_2.12-0.3.0-incubating-bundled.jar --datasetConfig datasetConfig.yaml --icebergCatalogConfig glueDataCatalog.yaml

it failed with

Exception in thread "main" java.lang.NoClassDefFoundError: org/openjdk/jol/info/GraphLayout at org.apache.hudi.common.util.ObjectSizeCalculator.getObjectSize(ObjectSizeCalculator.java:57) at org.apache.hudi.common.util.HoodieRecordSizeEstimator.(HoodieRecordSizeEstimator.java:40) at org.apache.hudi.common.table.log.HoodieMergedLogRecordScanner.(HoodieMergedLogRecordScanner.java:109) at org.apache.hudi.common.table.log.HoodieMergedLogRecordScanner.(HoodieMergedLogRecordScanner.java:76) at org.apache.hudi.common.table.log.HoodieMergedLogRecordScanner$Builder.build(HoodieMergedLogRecordScanner.java:466) at org.apache.hudi.metadata.HoodieMetadataLogRecordReader$Builder.build(HoodieMetadataLogRecordReader.java:219) at org.apache.hudi.metadata.HoodieBackedTableMetadata.getLogRecordScanner(HoodieBackedTableMetadata.java:498) at org.apache.hudi.metadata.HoodieBackedTableMetadata.openReaders(HoodieBackedTableMetadata.java:429) at org.apache.hudi.metadata.HoodieBackedTableMetadata.lambda$getOrCreateReaders$10(HoodieBackedTableMetadata.java:412) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) at org.apache.hudi.metadata.HoodieBackedTableMetadata.getOrCreateReaders(HoodieBackedTableMetadata.java:412) at org.apache.hudi.metadata.HoodieBackedTableMetadata.lookupKeysFromFileSlice(HoodieBackedTableMetadata.java:291) at org.apache.hudi.metadata.HoodieBackedTableMetadata.getRecordsByKeys(HoodieBackedTableMetadata.java:255) at org.apache.hudi.metadata.HoodieBackedTableMetadata.getRecordByKey(HoodieBackedTableMetadata.java:145) at org.apache.hudi.metadata.BaseTableMetadata.fetchAllPartitionPaths(BaseTableMetadata.java:316) at org.apache.hudi.metadata.BaseTableMetadata.getAllPartitionPaths(BaseTableMetadata.java:125) at org.apache.xtable.hudi.HudiDataFileExtractor.getFilesCurrentState(HudiDataFileExtractor.java:116) at org.apache.xtable.hudi.HudiConversionSource.getCurrentSnapshot(HudiConversionSource.java:110) at org.apache.xtable.spi.extractor.ExtractFromSource.extractSnapshot(ExtractFromSource.java:40) at org.apache.xtable.conversion.ConversionController.syncSnapshot(ConversionController.java:281) at org.apache.xtable.conversion.ConversionController.syncTableFormats(ConversionController.java:203) at org.apache.xtable.conversion.ConversionController.sync(ConversionController.java:106) at org.apache.xtable.utilities.RunSync.syncTableMetdata(RunSync.java:186) at org.apache.xtable.utilities.RunSync.runSync(RunSync.java:297) at org.apache.xtable.utilities.RunSync.main(RunSync.java:282) Caused by: java.lang.ClassNotFoundException: org.openjdk.jol.info.GraphLayout at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 25 more

To fix I modified xtable-utilities/pom.xml and changed this:

<dependency>
  <groupId>org.openjdk.jol</groupId>
  <artifactId>jol-core</artifactId>
  <scope>test</scope>
</dependency>

to:

<dependency>
  <groupId>org.openjdk.jol</groupId>
  <artifactId>jol-core</artifactId>
  <version>0.16</version>
</dependency>

then recompiled with:

mvn clean package -DskipTests

this time running the tool everything is ok.

Are you willing to submit PR?
  • I am willing to submit a PR!
  • I am willing to submit a PR but need help getting started!
Code of Conduct
Lingua principale
Java
Stelle
1.3k
Fork
224
Merge medio
3g 18h
PR unite (30g)
16

Preparare l'ambiente

  • Include un Dockerfile o un file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/incubator-xtable

Tutte le issue di apache/incubator-xtable

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.