Maj*_*imi 5 java glassfish maven jooq
我试图在 glassfish 中使用 JOOQ。我使用了这样的代码生成器:
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
Run Code Online (Sandbox Code Playgroud)
然后将生成的文件夹导入到我的项目中。(我没有使用 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
Run Code Online (Sandbox Code Playgroud)
我没有更改任何 maven 配置,只是 netbeans 默认配置。Maven 神器:
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>3.3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的 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>
Run Code Online (Sandbox Code Playgroud)
出了什么问题?有人可以帮忙吗?
[更新]
实际上,应用服务器类路径中有两个版本的 JOOQ:一个在域(domain1/lib/)的 lib 目录中,版本为 3.1,第二个是 3.3.1,捆绑在 war 文件中。这会导致问题吗?
实际上,应用程序服务器类路径中有两个版本的 JOOQ:第一个位于域的 lib 目录(domain1/lib/),版本为 3.1,第二个版本为 3.3.1,捆绑在 war 文件中。这会引起问题吗?
是的当然 :-)
如果您想并行使用两个版本(您真的吗?),那么您可能需要求助于OSGi之类的东西,以便能够在单独的类加载器中加载相同的类名。
在您的情况下,jOOQ 3.1 首先由您的应用程序服务器加载,因此 jOOQ 3.3 无法再完全加载。使用 jOOQ 3.3 生成的代码对 中的新内部方法进行操作TableImpl,这些方法已在 jOOQ 3.2 或 3.3 中添加,但由于您正在加载 jOOQ 3.1,因此这些方法不存在。请注意,任何外部依赖项都可能发生这种情况。
这里的解决方案实际上是从应用程序服务器中删除 jOOQ 3.1。
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |