Hello i am trying to create a workflow engine
Project Structure is as follows
└── workflow-engine/
├── workflow-engine-server/
│ ├── src
│ └── pom.xml
├── workflow-engine-data/
│ ├── src
│ └── pom.xml
├── workflow-engine-example/
│ ├── src
│ └── pom.xml
└── pom.xml
data is an empty project containing the generated jooq classes
server is the rest api, depending on data
example is an example implementation.
I am building the example exploded war file and deploying it to a locally setup wildfly 32 running inside intellij. I can deploy and start without any problems.
I have a rest endpoint
public ResponseEntity<Void> login(String username, String password) {
if (!userRepository.exists(USER.USERNAME.eq(username))) {
return ResponseEntity.of(
ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "USERNAME_DOES_NOT_EXIST")
).build();
}
return null;
}
When sending a post request to the endpoint i get a large exception inside server log
23.05.2024 13:34:17 ERROR [ ErrorPageFilter] Forwarding to error page from request [/auth] due to exception ['void org.jooq.impl.TableImpl.<init>(org.jooq.Name, org.jooq.Schema, org.jooq.Table, org.jooq.Field[], org.jooq.Comment, org.jooq.TableOptions, org.jooq.Condition)']: java.lang.NoSuchMethodError: 'void org.jooq.impl.TableImpl.<init>(org.jooq.Name, org.jooq.Schema, org.jooq.Table, org.jooq.Field[], org.jooq.Comment, org.jooq.TableOptions, org.jooq.Condition)'
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.jooq.tables.User.<init>(User.java:75)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.jooq.tables.User.<init>(User.java:71)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.jooq.tables.User.<init>(User.java:96)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.jooq.tables.User.<clinit>(User.java:45)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.jooq.Tables.<clinit>(Tables.java:19)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//net.internalerror.rest.controller.AuthController.login(AuthController.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:925)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:830)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at deployment.workflow-engine-example-1.0.0-SNAPSHOT.war//org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at [email protected]//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527)
and about 200 more lines
When debugging i see: Class not loaded: net.internalerror.jooq.Tables Screenshot
Why is the class not loaded? How can i fix that?
Edit: i have noticed, that the jooq jar in the compiled war file are version 3.18.13, but the dependencies are all version 3.19.8
This error seems relevant:
java.lang.NoSuchMethodError: 'void org.jooq.impl.TableImpl.<init>
So, your generated code is trying to load a constructor that does not (yet) exist in your runtime library. This is typically the case when you generate your code with a newer version of jOOQ than the one you use as an ordinary dependency.