Graalvm Сериализация java.lang.Integer?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Graalvm Сериализация java.lang.Integer?

Сообщение Anonymous »

Я работаю над тем, чтобы наше приложение Spring Boot работало с Graalvm внутри Docker-контейнера.
Я просматривал процесс добавления классов в Reflection-config.json и сериализации-config.json, и теперь у меня возникают проблемы с базовыми классами Java, такими как Number, Integer и Boolean.
Например,
2024-12-05T08:07:38.062Z ERROR 1 --- [wfprev] [nio-8080-exec-2] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/wfprev-api] threw exception [Handler dispatch failed: com.oracle.svm.core.jdk.UnsupportedFeatureError: SerializationConstructorAccessor class not found for declaringClass: java.lang.Integer (targetConstructorClass: java.lang.Object). Usually adding java.lang.Integer to serialization-config.json fixes the problem.]

с основной причиной
com.oracle.svm.core.jdk.UnsupportedFeatureError: SerializationConstructorAccessor class not found for declaringClass: java.lang.Integer (targetConstructorClass: java.lang.Object). Usually adding java.lang.Integer to serialization-config.json fixes the problem.

Конечно, мне не нужно добавлять каждый Java-класс в эти файлы конфигурации, не так ли? Что я делаю не так?
Вот мой файл сериализации-config.json:
[
{ "name": "org.springframework.hateoas.RepresentationModel"},
{ "name": "org.springframework.hateoas.Link"},
{ "name": "org.springframework.hateoas.Links"},
{ "name": "java.util.Date"},
{ "name": "java.sql.Timestamp" },
{ "name": "java.lang.Number" },
{ "name": "java.lang.Integer" },
{ "name": "java.lang.Boolean" },
{ "name": "java.math.BigDecimal" }

]

Вот мой Dockerfile на случай, если это поможет
FROM ghcr.io/graalvm/graalvm-community:21 AS builder

# Define build argument and set it as environment variable
ARG MAVEN_SETTINGS_FILE=settings.xml

ENV MAVEN_SETTINGS_FILE=${MAVEN_SETTINGS_FILE}

# The environment variables from .env are automatically available here
# We don't need the ARG declarations anymore since we're using the env file

WORKDIR /app

# Copy maven settings first
COPY mvn_settings/${MAVEN_SETTINGS_FILE} /root/.m2/settings.xml

# Copy rest of the application
COPY . /app

# Make mvnw executable
RUN chmod +x mvnw

# Build the native image using settings.xml
RUN ./mvnw -s mvn_settings/${MAVEN_SETTINGS_FILE} -Pnative native:compile -DskipTests

# Runtime stage
FROM ubuntu:22.04

# Install curl for healthcheck and debugging
RUN apt-get update && apt-get install -y \
libc6 \
libstdc++6 \
curl \
&& rm -rf /var/lib/apt/lists/*

# Copy the native executable from builder stage
COPY --from=builder /app/target/wfprev-api /

# Expose the port your application uses
EXPOSE 8080

ENTRYPOINT ["/wfprev-api"]```


Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-integer
Ответить

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

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

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

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

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