我试图在glassfish中使用JOOQ。我使用的代码生成器是这样的:使用JOOQ的java.lang.NoSuchMethodError
java -cp jOOQ-lib/jooq-3.3.1.jar:jOOQ-lib/jooq-meta-3.3.1.jar:jOOQ-lib/jooq-codegen-3.3.1.jar:mysql-connector-java-5.1.29-bin.jar:. org.jooq.util.GenerationTool /db.xml
然后导入生成的文件夹到我的项目(我不使用jooq Maven插件)。当我在GlassFish中部署Web应用程序我看到这个server.log中
[#|2014-04-06T14:53:37.720+0430|SEVERE|glassfish3.1.2|com.sun.xml.ws.server.sei.TieHandler|_ThreadID=670;_ThreadName=Thread-2;|org.jooq.impl.TableImpl.<init>(Ljava/lang/String;Lorg/jooq/Schema;Lorg/jooq/Table;[Lorg/jooq/Field;Ljava/lang/String;)V
java.lang.NoSuchMethodError: org.jooq.impl.TableImpl.<init>(Ljava/lang/String;Lorg/jooq/Schema;Lorg/jooq/Table;[Lorg/jooq/Field;Ljava/lang/String;)V
我并没有改变任何行家配置只是NetBeans的默认配置。 Maven构件:
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>3.3.1</version>
</dependency>
我db.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<!-- Configure the database connection here -->
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1/bulkdb?useUnicode=true</url>
<user>user</user>
<password>pass</password>
</jdbc>
<generator>
<database>
<name>org.jooq.util.mysql.MySQLDatabase</name>
<inputSchema>bulkdb</inputSchema>
<includes>.*</includes>
<excludes></excludes>
</database>
<target>
<packageName>bulkdb</packageName>
<directory>/home/user/jooq</directory>
</target>
</generator>
</configuration>
到底哪里出问题了?有人可以帮忙吗?
[UPDATE]
实际上有在应用服务器类路径中的两个版本JOOQ的:一个在结构域(域1/LIB /)3.1版本和第二个的lib目录是3.3.1被捆绑在战争文件中。这是否会导致问题?
尽管我对netbeans不太熟悉,但是您能否检查'jooq.jar'是否在您的依赖关系文件夹中? – tmarwen
@tmarwen是的,jooq-3.3.1.jar在依赖关系文件夹中 –
而且您确定*您已将jOOQ 3.3.1捆绑到您的应用服务器中,而不是旧版本的jOOQ? –