Java.lang.UnsatisfiedLinkError: 'int org.gdal.gdalconst.gdalconstJNI.GDT_Int8_get()' при использовании org.gdal и osgeo/JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java.lang.UnsatisfiedLinkError: 'int org.gdal.gdalconst.gdalconstJNI.GDT_Int8_get()' при использовании org.gdal и osgeo/

Сообщение Anonymous »

Я хочу поместить в контейнер приложение SpringBoot и использовать gdal.
Для этого я использую свой pom.xml

Код: Выделить всё

org.gdal
gdal
3.8.0

и

Код: Выделить всё

FROM osgeo/gdal:ubuntu-full-3.6.3
в Dockerfile.
Однако похоже, что org.gdal ссылается на константу, которой не существует. Я опишу это позже. Но сначала приведем важнейшие части исходного кода:
Dockerfile:

Код: Выделить всё

FROM maven:3.9.5-amazoncorretto-21 as build

WORKDIR /app
COPY target/converter-service-1.0.0-SNAPSHOT.jar app.jar

RUN mkdir -p target/extracted
RUN java -Djarmode=layertools -jar app.jar extract --destination target/extracted

FROM osgeo/gdal:ubuntu-full-3.6.3

ENV GDAL_DATA="/usr/share/gdal"
ENV GDAL_DRIVER_PATH="/usr/lib/x86_64-linux-gnu/gdalplugins"
ENV PROJ_LIB="/usr/share/proj"
ENV PATH="/usr/share/gdal:${PATH}"

WORKDIR app
RUN apt update && apt install -y openjdk-21-jre-headless
ARG EXTRACTED=/app/target/extracted
COPY --from=build ${EXTRACTED}/dependencies/ ./
COPY --from=build ${EXTRACTED}/spring-boot-loader/ ./
COPY --from=build ${EXTRACTED}/snapshot-dependencies/ ./
COPY --from=build ${EXTRACTED}/application/ ./
ENTRYPOINT ["java", "-Djava.library.path=/usr/share/java/", "org.springframework.boot.loader.launch.JarLauncher" ]
Код Java

Код: Выделить всё

package my;
import org.springframework.stereotype.Service;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
...

@Service
public class Grib2ToGeoTiffService {

static {
gdal.AllRegister();
}

@PostConstruct
private void postConstruct() {
convert(
ResourceUtils.getFile("classpath:file.grib2"),
new File("/tmp/output")
);

}

public boolean convert(File gribFile, File geotiffOutputDir) throws Exception {
if (!gribFile.exists()) {
log.error("File does not exist: '{}'", gribFile.getAbsolutePath());
return false;
}

var gribType = getGribType(gribFile.getName());
log.info("Grib type '{}' for '{}'", gribType, gribFile.getName());

Dataset dataset = gdal.Open(gribFile.getAbsolutePath(), gdalconstConstants.GA_ReadOnly);
if (dataset == null) {
log.warn("Unable to open file: " + gribFile.getAbsolutePath());
return false;
}

int bandCount = dataset.getRasterCount();
Map settingsMap = getSettingsMap(gribType);

for (int bandId = 1; bandId = 3.5)*/ GDT_UInt64 = 12,
/*! 64 bit signed integer  (GDAL >= 3.5)*/ GDT_Int64 = 13,
/*! Thirty two bit floating point */ GDT_Float32 = 6,
/*! Sixty four bit floating point */ GDT_Float64 = 7,
/*! Complex Int16 */ GDT_CInt16 = 8,
/*! Complex Int32 */ GDT_CInt32 = 9,
/* TODO?(#6879): GDT_CInt64 */
/*! Complex Float32 */ GDT_CFloat32 = 10,
/*! Complex Float64 */ GDT_CFloat64 = 11,
GDT_TypeCount = 14 /* maximum type # + 1 */
} GDALDataType;
...
Что вызывает ошибку? Возможно

Код: Выделить всё

org.gdal
gdal
3.8.0

и

Код: Выделить всё

FROM osgeo/gdal:ubuntu-full-3.6.3
несовместимы или я делаю что-то еще не так?

Подробнее здесь: https://stackoverflow.com/questions/791 ... dt-int8-ge
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»