Jonathan Janisch
06/25/2024, 3:24 PMquarkus create && cd code-with-cerbos
I modified the basic GreetingResource endpoint with the CerbosBlockingClient
sample code and that all compiles fine.
I modified pom.xml dependencies:
<dependency>
<groupId>dev.cerbos</groupId>
<artifactId>cerbos-sdk-java</artifactId>
<version>0.12.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
<version>1.63.0</version>
<scope>runtime</scope>
</dependency>
I'm not familiar with grpc. I've tried various scopes with grpc-core and nothing seemed to fix the issue.
When I hit that endpoint I'm getting:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2024-06-25 11:12:45,827 INFO [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.11.3) started in 2.605s. Listening on: <http://localhost:8080>
2024-06-25 11:12:45,830 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2024-06-25 11:12:45,831 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, rest, smallrye-context-propagation, vertx]
2024-06-25 11:13:05,979 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /hello/ failed, error id: 0b17d221-b74b-409d-b605-28103aba9d4b-1: java.lang.NoClassDefFoundError: com/google/protobuf/RuntimeVersion$RuntimeDomain
at dev.cerbos.api.v1.engine.Engine$Principal.<clinit>(Engine.java:15736)
at dev.cerbos.sdk.builders.Principal.<init>(Principal.java:17)
at dev.cerbos.sdk.builders.Principal.newInstance(Principal.java:21)
at org.acme.GreetingResource.hello(GreetingResource.java:26)
at org.acme.GreetingResource$quarkusrestinvoker$hello_e747664148511e1e5212d3e0f4b40d45c56ab8a1.invoke(Unknown Source)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:599)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ClassNotFoundException: com.google.protobuf.RuntimeVersion$RuntimeDomain
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)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:526)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:476)
Thịnh Trần
06/25/2024, 4:10 PMJonathan Janisch
06/25/2024, 4:42 PMThịnh Trần
06/25/2024, 6:02 PMapi(enforcedPlatform("com.google.protobuf:protobuf-bom:4.26.1"))
api(enforcedPlatform("io.grpc:grpc-bom:1.63.0"))
Jonathan Janisch
06/25/2024, 6:52 PMJonathan Janisch
06/26/2024, 1:44 AMdependencyManagement
portion of maven pom file fixed it:
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
<version>1.63.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.26.1</version>
</dependency>