Hi, I wrote some Java code that runs SNAP 13.0.0 to calculate LAI/NDVI for Sentinel 2 products. The results are the same as if I would run the gpt command with a graph xml.
On windows everything runs fine. I just set the home folder, start the engine and run the operators that I need.
| System.setProperty(snap.home, config.getSnapHome()); | |||
|---|---|---|---|
| org.esa.snap.runtime.Engine.start(); |
However on Linux I’ve not been able to run it. Both the gpt and my code (in a fat jar) get the “Failed to initialize GDAL native drivers” error I’ve posted below. The Linux version is Rocky9.
I’ve tried installing SNAP a couple of times. Removing the GDAL folders. Setting different paths to the snap folder. I’ve tried installing a different GDAL version on the machine. I even tried installing everything in a docker image. And a bunch of other suggestions I’ve got from AIs.
Any suggestions on how to solve this are appreciated.
[root@r9-128-131-169-107 snap]# java -jar snap-processor-1.0-SNAPSHOT-with-dependencies.jar
INFO: org.esa.snap.core.gpf.operators.tooladapter.ToolAdapterIO: Initializing external tool adapters
INFO: org.esa.snap.core.util.EngineVersionCheckActivator: Please check regularly for new updates for the best SNAP experience.
[main] INFO service.ProductProcessorService - csv loaded
[main] INFO service.ProductProcessorService - unzipped
[main] INFO service.ProductProcessorService - Starting Batch Processing: Mode: LAI | Execution: INCREMENTAL
[main] INFO service.ProductProcessorService - Processing S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE.zip: 1/1 plots pending.
[main] INFO service.ProductHandler - Executing LAI for 1 plots: S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE
[main] INFO hdf.hdflib.HDFLibrary - HDF4 library:
[main] INFO hdf.hdflib.HDFLibrary - successfully loaded.
[main] INFO hdf.hdf5lib.H5 - HDF5 library:
[main] INFO hdf.hdf5lib.H5 - successfully loaded.
INFO: eu.esa.opt.dataio.s2.ortho.S2OrthoProductReaderPlugIn: Building product reader - EPSG:32633
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [metadata_level] does not exist
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [bandid] does not exist
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [bandid] does not exist
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [bandid] does not exist
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [bandid] does not exist
WARNING: org.esa.snap.core.metadata.GenericXmlMetadata: Metadata: the path to element [bandid] does not exist
WARNING: eu.esa.opt.dataio.s2.ortho.metadata.S2OrthoMetadata: Warning: missing file /opt/snap/downloads/S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE/S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE/GRANULE/L2A_T33UWR_A040588_20230331T100025/QI_DATA/L2A_T33UWR_20230331T100031_DDV_20m.jp2
WARNING: eu.esa.opt.dataio.s2.ortho.metadata.S2OrthoMetadata: Warning: no image files found for band quality_dense_dark_vegetation
SEVERE: org.esa.snap.dataio.gdal.GDALLoader: Failed to initialize GDAL native drivers. GDAL readers and writers were disabled.null
SEVERE: snap.AbstractProcessor: [!] Error processing: /opt/snap/downloads/S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE/S2A_MSIL2A_20230331T100031_N0510_R122_T33UWR_20240825T230202.SAFE/MTD_MSIL2A.xml
java.lang.IllegalStateException: java.lang.IllegalStateException: GDAL NOT initialised! Check log for details.
at org.esa.snap.dataio.gdal.drivers.GDALReflection.fetchGDALLibraryConstant(GDALReflection.java:40)
at org.esa.snap.dataio.gdal.drivers.GDALConst.gaReadonly(GDALConst.java:28)
at eu.esa.opt.dataio.s2.Sentinel2ProductReader.computeJP2MatrixCellsResolutionCountWithGDAL(Sentinel2ProductReader.java:297)
at eu.esa.opt.dataio.s2.Sentinel2ProductReader.computeJP2MatrixCellsResolutionCount(Sentinel2ProductReader.java:325)
at eu.esa.opt.dataio.s2.Sentinel2ProductReader.computeMatrixCellsResolutionCount(Sentinel2ProductReader.java:288)
at eu.esa.opt.dataio.s2.ortho.Sentinel2OrthoProductReader.addBands(Sentinel2OrthoProductReader.java:544)
at eu.esa.opt.dataio.s2.ortho.Sentinel2OrthoProductReader.readProduct(Sentinel2OrthoProductReader.java:263)
at eu.esa.opt.dataio.s2.Sentinel2ProductReader.readProductNodesImpl(Sentinel2ProductReader.java:201)
at org.esa.snap.core.dataio.AbstractProductReader.readProductNodes(AbstractProductReader.java:181)
at eu.esa.opt.dataio.s2.ortho.Sentinel2OrthoProductReaderProxy.readProductNodes(Sentinel2OrthoProductReaderProxy.java:91)
at org.esa.snap.core.dataio.ProductIO.readProductImpl(ProductIO.java:255)
at org.esa.snap.core.dataio.ProductIO.readProduct(ProductIO.java:225)
at snap.AbstractProcessor.execute(AbstractProcessor.java:50)
at service.ProductHandler.executeSnap(ProductHandler.java:112)
at service.ProductHandler.handle(ProductHandler.java:54)
at service.ProductProcessorService.run(ProductProcessorService.java:109)
at Main.main(Main.java:41)
Caused by: java.lang.IllegalStateException: GDAL NOT initialised! Check log for details.
at org.esa.snap.dataio.gdal.GDALLoader.ensureGDALInitialised(GDALLoader.java:80)
at org.esa.snap.dataio.gdal.drivers.GDALReflection.fetchGDALLibraryClass(GDALReflection.java:45)
at org.esa.snap.dataio.gdal.drivers.GDALReflection.fetchGDALLibraryConstant(GDALReflection.java:35)
... 16 more