Ste*_*han 4 grails firebird hibernate jdbc jaybird
我正在尝试将Grails应用程序连接到Firebird数据库.
我在用:
到目前为止,这就是我所做的:
runtime "org.firebirdsql.jdbc:jaybird:2.2.2"到依赖项部分.dataSource部分:
dataSource {
pooled = false
driverClassName = "org.firebirdsql.jdbc.FBDriver"
dialect = "org.hibernate.dialect.FirebirdDialect"
username = "SYSDBA"
password = "masterkey"
}
Run Code Online (Sandbox Code Playgroud)
休眠部分:
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'org.firebirdsql.pool.FBSimpleDataSource'
}
Run Code Online (Sandbox Code Playgroud)
(我也有cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory和cache.provider_class = 'com.opensymphony.oscache.hibernate.OSCacheProvider'在分开的场合上面的部分,但也作出的任何差异).
运行我的Grails应用程序时,启动失败并出现一个巨大的错误,归结为以下消息:
java.lang.IllegalStateException: Could not load JDBC driver class [org.firebirdsql.jdbc.FBDriver]
Run Code Online (Sandbox Code Playgroud)
我已经远程搜索了网络,但我无法在任何地方找到有效的Grails/Firebird配置示例.有一个修复浮动,涉及复制minij2ee.jar,但这是一个不同的错误消息.此外,人们建议清空.grails文件夹 - 我试过这个,但无济于事.
有人可以建议,我怎样才能让Grails与Firebird合作?
这是完整的例外,虽然在启动期间似乎重复了几次:
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run in ''
^ 662 | run . . in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'sessionFactory':
Cannot resolve reference to bean 'dataSource' while setting bean property 'data
Source'; nested exception is org.springframework.beans.factory.BeanCreationExcep
tion: Error creating bean with name 'dataSource': Cannot resolve reference to be
an 'dataSourceUnproxied' while setting constructor argument; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean wi
th name 'dataSourceUnproxied': Error setting property values; nested exception i
s org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessE
xceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException:
Property 'driverClassName' threw exception; nested exception is java.lang.Illega
lStateException: Could not load JDBC driver class [org.firebirdsql.jdbc.FBDriver
]
Run Code Online (Sandbox Code Playgroud)
使用--verbose运行--stacktrace:
| Error Error running script --stacktrace --verbose: Cannot invoke method findAl
l() on null object
java.lang.NullPointerException: Cannot invoke method findAll() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:7
7)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaC
lassSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.j
ava:32)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMeta
MethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:116)
at org.codehaus.groovy.grails.cli.ScriptNameResolver.resolvesTo(ScriptNa
meResolver.groovy:30)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.getPotentialScripts
(GrailsScriptRunner.java:489)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeScriptWithCa
ching(GrailsScriptRunner.java:429)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeScriptWithCa
ching(GrailsScriptRunner.java:416)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner$executeScriptWithCa
ching.call(Unknown Source)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode.parseAndEx
ecute(InteractiveMode.groovy:280)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode$parseAndEx
ecute.callCurrent(Unknown Source)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode.run(Intera
ctiveMode.groovy:133)
at org.codehaus.groovy.grails.cli.interactive.InteractiveMode$run.call(U
nknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:112)
at RunApp$_run_closure7_closure11.doCall(RunApp:127)
at RunApp$_run_closure7_closure11.doCall(RunApp)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(Refl
ectiveInterceptor.java:1243)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1082)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1106)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:906)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:406)
at groovy.lang.Closure.run(Closure.java:490)
at java.lang.Thread.run(Thread.java:662)
| Error Error running script --stacktrace --verbose: Cannot invoke method findAl
l() on null object
Run Code Online (Sandbox Code Playgroud)
这是我BuildConfig.groovy文件中的存储库块:
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
grailsCentral()
mavenLocal()
mavenCentral()
// uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
mavenRepo "http://snapshots.repository.codehaus.org"
mavenRepo "http://repository.codehaus.org"
mavenRepo "http://download.java.net/maven/2/"
mavenRepo "http://repository.jboss.com/maven2/"
}
Run Code Online (Sandbox Code Playgroud)
您可能错过了Jaybird所需的依赖项.您需要在类路径中包含connector-api-1.5.jar(在libJaybird发行版的文件夹中).另一种方法是使用jaybird-full-2.2.2.jar(包括类connector-api-1.5.jar).
编辑
出于某种好奇心,我安装了grails并试了一下.我最初也有类似的错误(使用grails console),堆栈跟踪显示我java.lang.NoClassDefFoundError: javax/resource/ResourceException.它看起来像grails - 与文档相反 - 不检索传递依赖(这是一个wong,参见编辑2).
在我明确添加运行时依赖之后'javax.resource:connector-api:1.5',例如:
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
// runtime 'mysql:mysql-connector-java:5.1.22'
runtime 'org.firebirdsql.jdbc:jaybird-jdk17:2.2.2',
'javax.resource:connector-api:1.5'
}
Run Code Online (Sandbox Code Playgroud)
通过这种额外的依赖,它起作用 由于connector-api通常由应用程序服务器提供,因此最好将其指定为provided(您可能需要检查实际的部署环境).
如果你需要支持检索生成的密钥(或Gorm可能需要它),那么我建议你也添加'org.antlr:antlr-runtime:3.4'(作为runtime依赖).
编辑2
经过一些额外的测试后,看起来首先将下载的jaybird库安装到其中lib,然后声明依赖项将使常春藤创建对该本地库的依赖,而不是从maven中检索它.从lib文件夹中删除jaybird库并org.firebirdsql.jdbc从我的常春藤缓存中删除该文件夹后,它正确地从Maven下载了它,包括connector-api依赖项.
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |