Bug description Unable to start application after migrating to Spring AI - GA version from M6
`
<spring-ai.version>1.0.0</spring-ai.version>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>`
`
o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectionDetails' defined in class path resource [org/springframework/ai/model/vertexai/autoconfigure/embedding/VertexAiEmbeddingConnectionAutoConfiguration.class]: Failed to instantiate [org.springframework.ai.vertexai.embedding.VertexAiEmbeddingConnectionDetails]: Factory method 'connectionDetails' threw exception with message: com/google/auth/oauth2/SecureSessionAgent
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:648) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1355) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971) ~[spring-context-6.1.13.jar:6.1.13]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.13.jar:6.1.13]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.4.jar:3.3.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.4.jar:3.3.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.4.jar:3.3.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.4.jar:3.3.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.4.jar:3.3.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.4.jar:3.3.4]
at com.dq2.mv2.WebApplication.main(WebApplication.java:16) ~[classes/:na]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.ai.vertexai.embedding.VertexAiEmbeddingConnectionDetails]: Factory method 'connectionDetails' threw exception with message: com/google/auth/oauth2/SecureSessionAgent
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:178) ~[spring-beans-6.1.13.jar:6.1.13]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ~[spring-beans-6.1.13.jar:6.1.13]
... 19 common frames omitted
Caused by: java.lang.NoClassDefFoundError: com/google/auth/oauth2/SecureSessionAgent
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:855) ~[gax-grpc-2.65.0.jar:2.65.0]
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:847) ~[gax-grpc-2.65.0.jar:2.65.0]
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.newBuilder(InstantiatingGrpcChannelProvider.java:844) ~[gax-grpc-2.65.0.jar:2.65.0]
at com.google.cloud.aiplatform.v1.stub.PredictionServiceStubSettings.defaultGrpcTransportProviderBuilder(PredictionServiceStubSettings.java:373) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.stub.PredictionServiceStubSettings.defaultTransportChannelProvider(PredictionServiceStubSettings.java:378) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.stub.PredictionServiceStubSettings$Builder.createDefault(PredictionServiceStubSettings.java:568) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.stub.PredictionServiceStubSettings$Builder.access$100(PredictionServiceStubSettings.java:428) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.stub.PredictionServiceStubSettings.newBuilder(PredictionServiceStubSettings.java:391) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.PredictionServiceSettings$Builder.createDefault(PredictionServiceSettings.java:278) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.PredictionServiceSettings$Builder.access$000(PredictionServiceSettings.java:259) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at com.google.cloud.aiplatform.v1.PredictionServiceSettings.newBuilder(PredictionServiceSettings.java:241) ~[google-cloud-aiplatform-3.63.0.jar:3.63.0]
at org.springframework.ai.vertexai.embedding.VertexAiEmbeddingConnectionDetails$Builder.build(VertexAiEmbeddingConnectionDetails.java:171) ~[spring-ai-vertex-ai-embedding-1.0.0.jar:1.0.0]
at org.springframework.ai.model.vertexai.autoconfigure.embedding.VertexAiEmbeddingConnectionAutoConfiguration.connectionDetails(VertexAiEmbeddingConnectionAutoConfiguration.java:59) ~[spring-ai-autoconfigure-model-vertex-ai-1.0.0.jar:1.0.0]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ~[spring-beans-6.1.13.jar:6.1.13]
... 20 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.google.auth.oauth2.SecureSessionAgent
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[na:na]
... 36 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:53506', transport: 'socket'
Process finished with exit code 1`
Environment spring AI version: 1.0.0 Java 21 Spring boot 3.3.4
Properties file I have set these properties
`spring.ai.vertex.ai.embedding.project-id=<YOUR_PROJECT_ID>
spring.ai.vertex.ai.embedding.location=<YOUR_PROJECT_LOCATION>
`
To temporarily make it work I tried to add these properties, but none work
spring.ai.model.embedding.text=none
spring.ai.vertex.ai.embedding.enabled=false //docs suggest this is deprecated.
Steps to reproduce Add vertext embedding dependency and add properties in .properties file.
Expected behavior Application should start and dependencies should not be corrupted.
Minimal Complete Reproducible example Please provide a failing test or a minimal complete verifiable example that reproduces the issue. Bug reports that are reproducible will take priority in resolution over reports that are not reproducible.
Comment From: anupsajjan
Hi @ThomasVitale Any help on above issue?
I am facing similar issue with chat model now from VertexAI.
Using this config
spring.ai.vertex.ai.gemini.project-id=xyzAbc
spring.ai.vertex.ai.gemini.location=us-central1
spring.ai.vertex.ai.enabled=true
spring.ai.vertex.ai.apiEndpoint=us-central1-aiplatform.googleapis.com
spring.ai.vertex.ai.gemini.transport=REST
And using that in my factory this way
package com.demo.project.modules.ai.factory;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel;
import org.springframework.ai.vertexai.gemini.VertexAiGeminiChatOptions;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.google.cloud.vertexai.VertexAI;
import com.demo.project.common.model.ai.AIModel;
import com.demo.project.common.model.ai.AIProvider;
import com.demo.project.common.model.ai.AITool;
import com.demo.project.common.model.ai.MyAgent;
import com.demo.project.modules.ai.advisor.CustomPromptChatMemoryAdvisor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
@RequiredArgsConstructor
public class ChatClientFactory {
@Value("${spring.ai.vertex.ai.gemini.project-id}")
private String vertexProjectId;
@Value("${spring.ai.vertex.ai.gemini.location}")
private String vertexLocation;
@Value("${spring.ai.vertex.ai.apiEndpoint}")
private String vertexApiEndpoint;
private final ChatMemory chatMemory;
private final SimpleLoggerAdvisor simpleLoggerAdvisor;
private final ToolStoreFactory toolStoreFactory;
// Default model parameter values
private static final double DEFAULT_TEMPERATURE = 0.4;
private static final int DEFAULT_VERTEXAI_TOP_K = 40;
public ChatClient getChatClient(MyAgent mAgent) {
final ChatModel chatModel = getChatModel(mAgent);
return buildChatClient(chatModel, mAgent);
}
public ChatModel getChatModel(MyAgent mAgent) {
log.info("Getting chat client for provider: {} and model: {}",
mAgent.getAiProvider(), mAgent.getAiChatModel().getModelName());
final AIProvider aiProvider = mAgent.getAiProvider();
final AIModel aiModel = mAgent.getAiChatModel();
return switch (aiProvider) {
case OLLAMA -> getOllamaChatModel(aiModel.getModelName());
case VERTEXAI -> getVertexAiChatModel(aiModel.getModelName());
default -> throw new IllegalArgumentException("Unsupported model provider: " + aiProvider);
};
}
private ChatModel getVertexAiChatModel(String modelName) {
VertexAI vertexAI = new VertexAI.Builder()
.setProjectId(vertexProjectId)
.setLocation(vertexLocation)
.setApiEndpoint(vertexApiEndpoint)
.build();
return VertexAiGeminiChatModel.builder()
.vertexAI(vertexAI)
.defaultOptions(VertexAiGeminiChatOptions.builder()
.model(modelName)
.build())
.build();
}
/**
* Creates ChatOptions based on the MyAgent configuration.
* Extracts all the necessary information from the MyAgent and sets sensible defaults.
*
* @param mAgent The MyAgent containing AI provider, model, and tool information
* @return Appropriate ChatOptions for the given provider
*/
public ChatOptions getChatOptions(MyAgent mAgent) {
final AIModel aiModel = mAgent.getAiChatModel();
final Set<String> toolNames = getToolNames(mAgent.getAiTools());
List<ToolCallback> toolCallbacks = toolStoreFactory.getToolCallBacks(toolNames);
log.info("Creating chat options for provider: {}, model: {}", mAgent.getAiProvider(), aiModel.getModelName());
log.info("Tool names: {}", toolNames);
return switch (mAgent.getAiProvider()) {
case VERTEXAI -> VertexAiGeminiChatOptions.builder()
.model(aiModel.getModelName())
.temperature(DEFAULT_TEMPERATURE)
.topK(DEFAULT_VERTEXAI_TOP_K)
.toolCallbacks(toolCallbacks)
// .functions(toolNames)
.build();
default -> ChatOptions.builder()
.model(aiModel.getModelName())
.build();
};
}
/**
* Extract tool names from AITool set.
*
* @param aiTools Set of AITools
* @return Set of tool names as strings
*/
private Set<String> getToolNames(Set<AITool> aiTools) {
if (aiTools == null || aiTools.isEmpty()) {
return new HashSet<>();
}
return aiTools.stream()
.map(AITool::getToolName)
.collect(Collectors.toSet());
}
private ChatClient buildChatClient(ChatModel chatModel, MyAgent mAgent) {
boolean chatMemorySupported = mAgent.isChatMemorySupported();
ChatClient.Builder builder = ChatClient.builder(chatModel)
.defaultAdvisors(simpleLoggerAdvisor);
if (chatMemorySupported) {
builder.defaultAdvisors(CustomPromptChatMemoryAdvisor.builder(chatMemory).build());
}
return builder.build();
}
}
And finally calling llm something similar to this
String response = chatClient.prompt()
.options(chatOptions)
.system(enhancedPrompt)
.advisors(createCommonAdvisors())
.user(request.getUserQuery())
.advisors(advisors)
.advisors(a -> a
.param(CONVERSATION_ID, request.getConversationId())
.param(CHAT_MEMORY_AGENT_ID_KEY, mAgent.getId().toString()))
.call()
.content();
But it ends up throwing this error. I have cleared my .m2 and rebuild the whole project, not sure if spring bom is having corrupt dependency? Please let me know any resolution to this.
org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor:request: ChatClientRequest[prompt=Prompt{messages=[SystemMessage{textContent='You are a helpful doctor.
Current Timestamp: {timestamp}
Use the conversation memory from the MEMORY section to provide accurate answers.
---------------------
MEMORY:
---------------------
',org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor:request: ChatClientRequest[prompt=Prompt{messages=[SystemMessage{textContent='You are a helpful doctor.
Current Timestamp: {timestamp}
Use the conversation memory from the MEMORY section to provide accurate answers.
---------------------
MEMORY:
---------------------
',```
messageType=SYSTEM, metadata={messageType=SYSTEM}}, UserMessage{content='Hello I have fever', properties={messageType=USER}, messageType=USER}], modelOptions=VertexAiGeminiChatOptions{stopSequences=null, temperature=0.4, topP=null, topK=40, frequencyPenalty=null, presencePenalty=null, candidateCount=null, maxOutputTokens=null, model='gemini-2.0-flash', responseMimeType='null', toolCallbacks=[], toolNames=[], googleSearchRetrieval=false, safetySettings=[]}}, context={chat_memory_agent_id=337699b2-6f63-4514-9711-bc706949b769, chat_memory_conversation_id=5f5f200c-b067-4177-8870-f8ba547ab2c9, timestamp=2025-06-18T12:17:56.736882+05:30[Asia/Kolkata]}]
2025-06-18 12:17:59 WARN [http-nio-8080-exec-4] [e:env_IS_UNDEFINED] [a:appName_IS_UNDEFINED] [rId:] [tId:] [oId:f93e028e-9be3-4247-b582-f3c3d3581e43] [trace_id:] [span_id:] org.springframework.ai.retry.RetryUtils:Retry error. Retry count:1
java.lang.ClassNotFoundException: com.google.auth.oauth2.SecureSessionAgent
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 186 common frames omitted
Wrapped by: java.lang.NoClassDefFoundError: com/google/auth/oauth2/SecureSessionAgent
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:855)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:847)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.newBuilder(InstantiatingGrpcChannelProvider.java:844)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.defaultGrpcTransportProviderBuilder(PredictionServiceStubSettings.java:382)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.defaultTransportChannelProvider(PredictionServiceStubSettings.java:394)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings$Builder.createDefault(PredictionServiceStubSettings.java:602)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings$Builder.access$100(PredictionServiceStubSettings.java:462)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.newBuilder(PredictionServiceStubSettings.java:420)
at com.google.cloud.vertexai.api.PredictionServiceSettings$Builder.createDefault(PredictionServiceSettings.java:292)
at com.google.cloud.vertexai.api.PredictionServiceSettings$Builder.access$000(PredictionServiceSettings.java:273)
at com.google.cloud.vertexai.api.PredictionServiceSettings.newBuilder(PredictionServiceSettings.java:250)
at com.google.cloud.vertexai.VertexAI.getPredictionServiceSettings(VertexAI.java:358)
at com.google.cloud.vertexai.VertexAI.newPredictionServiceClient(VertexAI.java:345)
at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:181)
at com.google.cloud.vertexai.VertexAI.getPredictionServiceClient(VertexAI.java:334)
at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:467)
at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:454)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.getContentResponse(VertexAiGeminiChatModel.java:775)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$4(VertexAiGeminiChatModel.java:409)
at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:344)
at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:217)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$5(VertexAiGeminiChatModel.java:405)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.internalCall(VertexAiGeminiChatModel.java:405)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.call(VertexAiGeminiChatModel.java:392)
at org.springframework.ai.chat.client.advisor.ChatModelCallAdvisor.adviseCall(ChatModelCallAdvisor.java:54)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor.adviseCall(SimpleLoggerAdvisor.java:74)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.api.BaseAdvisor.adviseCall(BaseAdvisor.java:52)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.api.BaseAdvisor.adviseCall(BaseAdvisor.java:52)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientResponse$1(DefaultChatClient.java:469)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:467)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:446)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:441)
at com.demo.project.modules.ai.agent.UserDefinedAgent.handleAgentChatRequest(UserDefinedAgent.java:65)
at com.demo.project.modules.ai.agent.UserDefinedAgent.handleAgentChatRequest(UserDefinedAgent.java:1)
at com.demo.project.modules.ai.agent.AbstractAIAgent.process(AbstractAIAgent.java:83)
at com.demo.project.modules.ai.service.MAgentChatService.chat(MAgentChatService.java:51)
at com.demo.project.MAgentController.chat(MAgentController.java:135)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547) [11 skipped]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) [1 skipped]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [2 skipped]
at com.demo.project.modules.multitenancy.auth.service.JWTFilter.doFilterInternal(JWTFilter.java:97) [37 skipped]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) [70 skipped]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:1583)
2025-06-18 12:17:59 ERROR [http-nio-8080-exec-4] [e:env_IS_UNDEFINED] [a:appName_IS_UNDEFINED] [rId:] [tId:] [oId:f93e028e-9be3-4247-b582-f3c3d3581e43] [trace_id:] [span_id:] com.demo.project.exception.GlobalExceptionHandler:Unknown error occurred:
java.lang.ClassNotFoundException: com.google.auth.oauth2.SecureSessionAgent
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 186 common frames omitted
Wrapped by: java.lang.NoClassDefFoundError: com/google/auth/oauth2/SecureSessionAgent
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:855)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$Builder.<init>(InstantiatingGrpcChannelProvider.java:847)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.newBuilder(InstantiatingGrpcChannelProvider.java:844)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.defaultGrpcTransportProviderBuilder(PredictionServiceStubSettings.java:382)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.defaultTransportChannelProvider(PredictionServiceStubSettings.java:394)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings$Builder.createDefault(PredictionServiceStubSettings.java:602)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings$Builder.access$100(PredictionServiceStubSettings.java:462)
at com.google.cloud.vertexai.api.stub.PredictionServiceStubSettings.newBuilder(PredictionServiceStubSettings.java:420)
at com.google.cloud.vertexai.api.PredictionServiceSettings$Builder.createDefault(PredictionServiceSettings.java:292)
at com.google.cloud.vertexai.api.PredictionServiceSettings$Builder.access$000(PredictionServiceSettings.java:273)
at com.google.cloud.vertexai.api.PredictionServiceSettings.newBuilder(PredictionServiceSettings.java:250)
at com.google.cloud.vertexai.VertexAI.getPredictionServiceSettings(VertexAI.java:358)
at com.google.cloud.vertexai.VertexAI.newPredictionServiceClient(VertexAI.java:345)
at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:181)
at com.google.cloud.vertexai.VertexAI.getPredictionServiceClient(VertexAI.java:334)
at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:467)
at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:454)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.getContentResponse(VertexAiGeminiChatModel.java:775)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$4(VertexAiGeminiChatModel.java:409)
at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:344)
at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:217)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$5(VertexAiGeminiChatModel.java:405)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.internalCall(VertexAiGeminiChatModel.java:405)
at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.call(VertexAiGeminiChatModel.java:392)
at org.springframework.ai.chat.client.advisor.ChatModelCallAdvisor.adviseCall(ChatModelCallAdvisor.java:54)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor.adviseCall(SimpleLoggerAdvisor.java:74)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.api.BaseAdvisor.adviseCall(BaseAdvisor.java:52)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.advisor.api.BaseAdvisor.adviseCall(BaseAdvisor.java:52)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientResponse$1(DefaultChatClient.java:469)
at io.micrometer.observation.Observation.observe(Observation.java:565)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:467)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:446)
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:441)
at com.demo.project.modules.ai.agent.UserDefinedAgent.handleAgentChatRequest(UserDefinedAgent.java:65)
at com.demo.project.modules.ai.agent.UserDefinedAgent.handleAgentChatRequest(UserDefinedAgent.java:1)
at com.demo.project.modules.ai.agent.AbstractAIAgent.process(AbstractAIAgent.java:83)
at com.demo.project.modules.ai.service.MAgentChatService.chat(MAgentChatService.java:51)
at com.demo.project.MAgentController.chat(MAgentController.java:135)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547) [11 skipped]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) [1 skipped]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [2 skipped]
at com.demo.project.modules.multitenancy.auth.service.JWTFilter.doFilterInternal(JWTFilter.java:97) [37 skipped]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) [70 skipped]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
... 126 common frames omitted
Wrapped by: jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: com/google/auth/oauth2/SecureSessionAgent
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:547) [4 skipped]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) [1 skipped]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [2 skipped]
at com.demo.project.modules.multitenancy.auth.service.JWTFilter.doFilterInternal(JWTFilter.java:97) [37 skipped]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) [70 skipped]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:1583)
```
Comment From: luyi404
Getting the same error