1

I have 2 maven modules. 1st one defines a simple PingResource (code below) 2nd (main) module references 1st module and uses quarkus-maven-plugin to a) create uber jar, main-runner.jar b) launch the application by mvn quarkus:dev

If I launch the application by "java -jar main-runner.jar" ping resource is accessible If I use "mvn quarkus:dev", the error below appeared.

I suppose, it is somehow linked, how PingResource is resolved during "quarkus:dev". I can even test the PingResource in 2nd module by using "@QuarkusTest" annotation. 1st module declares "META-INF/beans.xml" to allow bean discovery.

Any idea what can be wrong?

Listening for transport dt_socket at address: 5005
2020-02-07 09:01:34,655 INFO  [io.quarkus] (main) developer-test 1.0.0 (running on Quarkus 1.2.0.Final) started in 2.500s. Listening on: http://0.0.0.0:8080
2020-02-07 09:01:34,668 INFO  [io.quarkus] (main) Profile dev activated. Live Coding activated.
2020-02-07 09:01:34,668 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy, resteasy-jackson]
2020-02-07 09:01:34,834 ERROR [org.jbo.res.res.i18n] (executor-thread-1) RESTEASY002005: Failed executing GET /v1/ping: org.jboss.resteasy.spi.InternalServerErrorException: RESTEASY003020: Bad arguments passed to public java.lang.String com.http.PingResource.hello()  ( )
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:191)
    at org.jboss.resteasy.core.MethodInjectorImpl.lambda$invoke$3(MethodInjectorImpl.java:122)
    at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:616)
    at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:628)
    at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1996)
    at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:110)
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:122)
    at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:594)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:468)
    at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:421)
    at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:363)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:423)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:391)
    at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invoke$1(ResourceMethodInvoker.java:365)
    at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:995)
    at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2137)
    at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:110)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:365)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:477)
    at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:252)
    at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:153)
    at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:363)
    at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:156)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:238)
    at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
    at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:120)
    at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:36)
    at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:85)
    at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:224)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1395)
    at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
    at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
    at java.lang.Thread.run(Thread.java:748)
    at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:151)
    ... 38 more
@Path("/v1/ping")
public class PingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return Instant.now() + ": ok";
    }
}

Update: I tried to reproduce the issue again with new maven projects, 1.2.0.Final. It worked fine. I created 2 maven modules, one declared just the jax-rs resource (no dependency to quarkus at all, just javax-ee), second reference first one and include quarkus dependencies + its maven plugin. quarkus:dev works fine. So the first issue might be some gen-unique issue linked to our "fat" library, which uses CDI to inject persistence, monitoring servlet, logger etc.

Lonestar
  • 51
  • 6
  • Could you try the most recent 1.3.0.Alpha1 version? It introduces some features related to multi-module projects: https://groups.google.com/forum/#!topic/quarkus-dev/ovaJ1GUang8 . Maybe it will help you – Denis.Kipchakbaev Feb 07 '20 at 12:29
  • I tried, but it failed. It might be some miss-configuration in maven, but mvn quarkus-dev complains about: `Listening for transport dt_socket at address: 5005 Exception in thread "main" java.lang.NoClassDefFoundError: io/quarkus/deployment/devmode/HotReplacementSetup at io.quarkus.dev.DevModeMain.start(DevModeMain.java:85) ... Caused by: java.lang.ClassNotFoundException: io.quarkus.deployment.devmode.HotReplacementSetup ...` – Lonestar Feb 07 '20 at 15:25
  • @Lonestar do you maybe have some dependencies leaking from 1.2.0? Could you run `mvn dependency:tree` on the project with 1.3.0.Alpha1 and check that? – Michał Szynkiewicz Feb 09 '20 at 13:40
  • @Michał Szynkiewicz: I found what was wrong. That error was due to old quarkus-maven-plugin 1.2.0.Final. It works fine with 1.3.0.Alpha1 plugin. – Lonestar Feb 10 '20 at 22:12

0 Answers0