Its slightly older thread but anyone trying to generate jOOQ configuration 
using Java, please make sure you have below jars on your classpath:
jooq-3.9.6.jar
jooq-meta-3.9.6.jar
jooq-codegen-3.9.6.jar

Source: 
https://www.jooq.org/doc/3.9/manual/code-generation/codegen-programmatic/

Reason for confusion:
org.jooq.Configuration(Interface) vs org.jooq.util.jaxb.Configuration(Class)

Without above jars on classpath, compiler will think you are trying to 
instantiate an abstract class. Took me a while to figure out, thought to 
share with community.

Happy coding!


On Sunday, April 2, 2017 at 11:13:53 AM UTC-7, Durim Kryeziu wrote:
>
> Hello,
>
> I'm very new to jOOQ library and I really like this library based on what 
> I saw in the official web site.
>
> I'm working on a Spring Boot application which I package as a *war* file 
> to deploy to an external Tomcat Server.
> First I want to use jOOQ only as a SQL query builder, and I have to 
> connect to a database with many tables and don't want to generate sources 
> every time because it takes a while to finish.
>
> Is it possible, if so, then can you give me some hints or guide me how to 
> do that ?
> Thanks in advance
>
> I want to use the Programmatic configuration to be able to access some 
> environment variables for database credentials through 
> *Environment*
> So, I created a @RestController and @Autowired the Environment bean and 
> exposed through a URL to be able to Generate the sources only when I want 
> to:
>
> @RestController
> @RequestMapping("jooq/generate-sources")
> public class CodeGeneratorController {
>
>     private Environment env;
>
>     @Autowired
>     public CodeGeneratorController(Environment env) {
>         this.env = env;
>     }
>
>     @RequestMapping(method = RequestMethod.POST)
>     public ResponseEntity generateSources() throws Exception {
>
>         Configuration configuration = new Configuration()
>                 .withLogging(Logging.INFO)
>                 .withJdbc(new Jdbc()
>                         .withDriver("com.mysql.jdbc.Driver")
>                         .withUsername(env.getRequiredProperty("DB_USERNAME"))
>                         .withPassword(env.getRequiredProperty("DB_PASSWORD"))
>                         .withUrl(env.getRequiredProperty("DB_URL")))
>                 .withGenerator(new Generator()
>                         .withDatabase(new Database()
>                                 .withName("org.jooq.util.mysql.MySQLDatabase")
>                                 .withIncludes(".*")
>                                 .withInputSchema("my_schema"))
>                         .withTarget(new Target()
>                                 .withEncoding("UTF-8")
>                                 
> .withPackageName("com.my.package.data.generated-sources")
>                                 .withDirectory("src/main/java")));
>
>         GenerationTool.generate(configuration);
>
>         return ResponseEntity.ok().build();
>     }
> }
>
>
> Also jOOQ related I have these dependencies on my pom.xml file:
>
> <dependency>
>     <groupId>org.springframework.boot</groupId>
>     <artifactId>spring-boot-starter-jooq</artifactId>
> </dependency>
>
> <dependency>
>     <groupId>org.jooq</groupId>
>     <artifactId>jooq-codegen</artifactId>
> </dependency>
>
>
>
> Then when I try to start the application (with IntelliJ IDEA, already 
> configured to run on Tomcat) I see this message:
> 2017-04-02 19:53:10.591  WARN 92073 --- [on(2)-127.0.0.1] 
> ationConfigEmbeddedWebApplicationContext : Exception encountered during 
> context initialization - cancelling refresh attempt: org.springframework.
> beans.factory.BeanCreationException: Error creating bean with name 
> 'dslContext' defined in class path resource [org/springframework/boot/
> autoconfigure/jooq/JooqAutoConfiguration$DslContextConfiguration.class]: 
> Post-processing of merged bean definition failed; nested exception is java
> .lang.StackOverflowError
>
> And then this exception:
>
> org.springframework.beans.factory.BeanCreationException: Error creating 
> bean with name 'dslContext' defined in class path resource 
> [org/springframework/boot/autoconfigure/jooq/JooqAutoConfiguration$DslContextConfiguration.class]:
>  
> Post-processing of merged bean definition failed; nested exception is 
> java.lang.StackOverflowError
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:526)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
>  
> ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
>  
> ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
>  
> ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
>  
> ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
>  
> ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
>  
> ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.SpringApplication.run(SpringApplication.java:314) 
> ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
>  
> [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
>  
> [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
>  
> [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
> at 
> org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
>  
> [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
> at 
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5240)
>  
> [catalina.jar:8.0.33]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
> [catalina.jar:8.0.33]
> at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
>  
> [catalina.jar:8.0.33]
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
> [catalina.jar:8.0.33]
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
> [catalina.jar:8.0.33]
> at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696) 
> [catalina.jar:8.0.33]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  
> ~[na:1.8.0_60]
> at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60]
> at 
> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
> [tomcat-coyote.jar:8.0.33]
> at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
>  
> [na:1.8.0_60]
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
> [na:1.8.0_60]
> at 
> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)
>  
> [catalina.jar:8.0.33]
> at 
> org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)
>  
> [catalina.jar:8.0.33]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  
> ~[na:1.8.0_60]
> at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60]
> at 
> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
> [tomcat-coyote.jar:8.0.33]
> at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
>  
> [na:1.8.0_60]
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
> [na:1.8.0_60]
> at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1471)
>  
> [na:1.8.0_60]
> at 
> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
>  
> [na:1.8.0_60]
> at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1312)
>  
> [na:1.8.0_60]
> at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1404)
>  
> [na:1.8.0_60]
> at 
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:832)
>  
> [na:1.8.0_60]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_60]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  
> ~[na:1.8.0_60]
> at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60]
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) 
> [na:1.8.0_60]
> at sun.rmi.transport.Transport$1.run(Transport.java:200) [na:1.8.0_60]
> at sun.rmi.transport.Transport$1.run(Transport.java:197) [na:1.8.0_60]
> at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_60]
> at sun.rmi.transport.Transport.serviceCall(Transport.java:196) 
> [na:1.8.0_60]
> at 
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 
> [na:1.8.0_60]
> at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
>  
> [na:1.8.0_60]
> at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$256(TCPTransport.java:683)
>  
> [na:1.8.0_60]
> at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_60]
> at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
>  
> [na:1.8.0_60]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  
> ~[na:1.8.0_60]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  
> ~[na:1.8.0_60]
> at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_60]....
>
> Hope I was clear explaining my problem
> Thanks
>

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jooq-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to