Java 将系统类加载器与grapes一起使用时出错
我正在用Java编写一个简单的Groovy程序,从数据库中读取一些内容:Java 将系统类加载器与grapes一起使用时出错,java,groovy,Java,Groovy,我正在用Java编写一个简单的Groovy程序,从数据库中读取一些内容: @Grab('com.oracle:ojdbc6:11.2.0.1.0') @Grab(group='org.codehaus.groovy', module='groovy-sql', version='2.4.6') import groovy.sql.Sql def db = [url: "jdbc:oracle:thin:@localhost:1521:XE", user: 'user_ks
@Grab('com.oracle:ojdbc6:11.2.0.1.0')
@Grab(group='org.codehaus.groovy', module='groovy-sql', version='2.4.6')
import groovy.sql.Sql
def db = [url: "jdbc:oracle:thin:@localhost:1521:XE",
user: 'user_kshitiz', password: 'a', driver: 'oracle.jdbc.driver.OracleDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
但是,这给了我一个java.sql.SQLException:找不到合适的驱动程序
错误。
因此,我将grapes配置为使用system classloader:
@Grapes([
@Grab('com.oracle:ojdbc6:11.2.0.1.0'),
@GrabConfig(systemClassLoader = true)
])
这也会导致以下错误:
Information:Groovyc: java.lang.NoSuchMethodException: org.codehaus.groovy.runtime.dgm$518.<init>(java.lang.String, org.codehaus.groovy.reflection.CachedClass, java.lang.Class, [Ljava.lang.Class;)
at java.lang.Class.getConstructor0(Class.java:2849)
at java.lang.Class.getConstructor(Class.java:1718)
at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.createProxy(GeneratedMetaMethod.java:92)
at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.proxy(GeneratedMetaMethod.java:83)
at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.isValidMethod(GeneratedMetaMethod.java:68)
at groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3172)
at groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:3134)
at groovy.lang.MetaClassImpl.getMethodWithCachingInternal(MetaClassImpl.java:1330)
at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3367)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:132)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:166)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:271)
at groovy.grape.Grape.grab(Grape.java:167)
at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:378)
at org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:321)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:58)
at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:116)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:156)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.access$000(InProcessGroovyc.java:51)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:85)
at org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
信息:Groovyc:java.lang.NoSuchMethodException:org.codehaus.groovy.runtime.dgm$518(java.lang.String,org.codehaus.groovy.reflection.CachedClass,java.lang.Class,[Ljava.lang.Class;)
位于java.lang.Class.getConstructor0(Class.java:2849)
位于java.lang.Class.getConstructor(Class.java:1718)
位于org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.createProxy(GeneratedMetaMethod.java:92)
位于org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.Proxy(GeneratedMetaMethod.java:83)
位于org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.isValidMethod(GeneratedMetaMethod.java:68)
在groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3172)
在groovy.lang.MetaClassImpl.chooseMethod上(MetaClassImpl.java:3134)
位于groovy.lang.MetaClassImpl.getMethodWithCachingInternal(MetaClassImpl.java:1330)
位于groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3367)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:132)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:166)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
在groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:271)
在groovy.grape.grape.grab(grape.java:167)
在groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:378)
位于org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:321)
位于org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
位于org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
位于org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
位于org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
位于org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:58)
位于org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:116)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:132)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:156)
位于org.jetbrains.jps.incremental.groovy.InProcessGroovyc.access$000(InProcessGroovyc.java:51)
在org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:85)
在org.jetbrains.jps.incremental.groovy.InProcessGroovyc$1.call(InProcessGroovyc.java:82)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
如何在Groovy中创建数据库连接?好的,Oracle驱动程序在Maven Central中不可公开访问。不过,您有一些选择:
顺便说一句,Oracle驱动程序在Maven Central中是不可公开访问的。不过您有一些选择:
Oracle Maven repository上提供了JDBC驱动程序。有关详细信息,请按照本文中的说明操作。Oracle Maven repository上提供了JDBC驱动程序。有关详细信息,请按照本文中的说明操作