Kein HttpMessageConverter für xxx.xxx.xx, wenn ich JSON abrufe, verwende RestClient mit Spring Boot NativeJava

Java-Forum
Guest
 Kein HttpMessageConverter für xxx.xxx.xx, wenn ich JSON abrufe, verwende RestClient mit Spring Boot Native

Post by Guest »

Ich verwende Spring Boot 3.4.1 auf GraalVM 21.0.5
Dies ist eine einfache Webanwendung, die zwei Klassen enthält
  • Die erste Klasse ist LoginEntity
package xzcode.nativedemo.request;

import java.io.Serial;
import java.io.Serializable;

public record LoginEntity(
String acctID,
String username,
String password,
String lcid
) implements Serializable {
@Serial
private static final long serialVersionUID = 8219088952080888490L;
}

  • die 2. Klasse ist die Anwendungsklasse
package xzcode.nativedemo;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestClient;
import xzcode.nativedemo.request.LoginEntity;

import java.net.URI;

@SpringBootApplication
public class NativeDemoApplication implements ApplicationRunner {

private final RestClient.Builder clientBuilder;

public NativeDemoApplication(RestClient.Builder clientBuilder) {
this.clientBuilder = clientBuilder;
}

public static void main(String[] args) {
SpringApplication.run(NativeDemoApplication.class);
}

@Override
public void run(ApplicationArguments args) throws Exception {
LoginEntity loginEntity = new LoginEntity(
"65003cf500b386",
"kingdee",
"666666",
"2052"
);

ResponseEntity response = clientBuilder.build()
.post()
.uri(new URI("https://www.google.com"))
.body(loginEntity)
.retrieve()
.toEntity(String.class);
System.out.println(response.getBody());
}
}

und das ist mein build.gradle.kts
plugins {
java
id("org.springframework.boot") version "3.4.0"
id("io.spring.dependency-management") version "1.1.7"
id("org.graalvm.buildtools.native") version "0.10.4"
}

group = "com.xzcode"
version = "0.0.1-SNAPSHOT"

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

repositories {
mavenCentral()
}

dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

tasks.withType {
useJUnitPlatform()
}

wenn ich diese Anwendung mit einer normalen Java-Anwendung ausführe. Die Ausführung war erfolgreich.
Aber wenn ich es in einer nativen Anwendung erstelle, verwende ich gradlew nativeCompile und führe die exe-Datei unter Windows aus.
Der Fehler wurde gemeldet
org.springframework.web.client.RestClientException: No HttpMessageConverter for xzcode.nativedemo.request.LoginEntity
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.writeWithMessageConverters(DefaultRestClient.java:504)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.lambda$body$0(DefaultRestClient.java:455)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:563)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchange(DefaultRestClient.java:532)
at org.springframework.web.client.RestClient$RequestHeadersSpec.exchange(RestClient.java:677)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.executeAndExtract(DefaultRestClient.java:806)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntityInternal(DefaultRestClient.java:766)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntity(DefaultRestClient.java:755)
at xzcode.nativedemo.NativeDemoApplication.run(NativeDemoApplication.java:40)
at org.springframework.boot.SpringApplication.lambda$callRunner$4(SpringApplication.java:784)
at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:82)
at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60)
at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:86)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:796)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784)
at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:772)
at java.base@21.0.5/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.base@21.0.5/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
at java.base@21.0.5/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
at java.base@21.0.5/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base@21.0.5/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base@21.0.5/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base@21.0.5/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base@21.0.5/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:772)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:325)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
at xzcode.nativedemo.NativeDemoApplication.main(NativeDemoApplication.java:23)
at java.base@21.0.5/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

Das Projekt-Repository ist https://github.com/ldwqh0/nativeDemo

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post