Skip to content

Commit e8c5efe

Browse files
pditommasoclaude
andcommitted
Fix GraalVM native image build failure
Fix native image compilation by initializing logback/slf4j classes at build time. This is required because App.java and other classes use static final logger fields that call LoggerFactory.getLogger() at class initialization. Also remove OpenAI-related reflection config entries since OpenAI dependency was removed in previous commit. Fixes the native build error: "Classes that should be initialized at run time got initialized during image building" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ead1407 commit e8c5efe

2 files changed

Lines changed: 2 additions & 65 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ graalvmNative {
105105
buildArgs.add('-R:MaxHeapSize=100M')
106106
buildArgs.add('-R:MinHeapSize=10M')
107107
buildArgs.add('-R:MaxNewSize=25M')
108+
// Initialize logback classes at build time since they're used by static logger fields
109+
buildArgs.add('--initialize-at-build-time=ch.qos.logback,org.slf4j')
108110
}
109111
}
110112
toolchainDetection = true

app/conf/reflect-config.json

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -126,71 +126,6 @@
126126
"name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
127127
"methods":[{"name":"<init>","parameterTypes":[] }]
128128
},
129-
{
130-
"name":"dev.ai4j.openai4j.chat.AssistantMessage",
131-
"allDeclaredFields":true,
132-
"methods":[{"name":"<init>","parameterTypes":[] }]
133-
},
134-
{
135-
"name":"dev.ai4j.openai4j.chat.ChatCompletionChoice",
136-
"allDeclaredFields":true,
137-
"methods":[{"name":"<init>","parameterTypes":[] }]
138-
},
139-
{
140-
"name":"dev.ai4j.openai4j.chat.ChatCompletionRequest",
141-
"allDeclaredFields":true,
142-
"methods":[{"name":"<init>","parameterTypes":[] }]
143-
},
144-
{
145-
"name":"dev.ai4j.openai4j.chat.ChatCompletionResponse",
146-
"allDeclaredFields":true,
147-
"methods":[{"name":"<init>","parameterTypes":[] }]
148-
},
149-
{
150-
"name":"dev.ai4j.openai4j.chat.Delta",
151-
"allDeclaredFields":true,
152-
"methods":[{"name":"<init>","parameterTypes":[] }]
153-
},
154-
{
155-
"name":"dev.ai4j.openai4j.chat.Function",
156-
"allDeclaredFields":true,
157-
"methods":[{"name":"<init>","parameterTypes":[] }]
158-
},
159-
{
160-
"name":"dev.ai4j.openai4j.chat.FunctionCall",
161-
"allDeclaredFields":true,
162-
"methods":[{"name":"<init>","parameterTypes":[] }]
163-
},
164-
{
165-
"name":"dev.ai4j.openai4j.chat.Parameters",
166-
"allDeclaredFields":true,
167-
"methods":[{"name":"<init>","parameterTypes":[] }]
168-
},
169-
{
170-
"name":"dev.ai4j.openai4j.chat.ResponseFormat",
171-
"allDeclaredFields":true,
172-
"methods":[{"name":"<init>","parameterTypes":[] }]
173-
},
174-
{
175-
"name":"dev.ai4j.openai4j.chat.Tool",
176-
"allDeclaredFields":true,
177-
"methods":[{"name":"<init>","parameterTypes":[] }]
178-
},
179-
{
180-
"name":"dev.ai4j.openai4j.chat.ToolCall",
181-
"allDeclaredFields":true,
182-
"methods":[{"name":"<init>","parameterTypes":[] }]
183-
},
184-
{
185-
"name":"dev.ai4j.openai4j.chat.ToolChoice",
186-
"allDeclaredFields":true,
187-
"methods":[{"name":"<init>","parameterTypes":[] }]
188-
},
189-
{
190-
"name":"dev.ai4j.openai4j.shared.Usage",
191-
"allDeclaredFields":true,
192-
"methods":[{"name":"<init>","parameterTypes":[] }]
193-
},
194129
{
195130
"name":"groovy.lang.Closure"
196131
},

0 commit comments

Comments
 (0)