使kscript从外部Maven存储库加载jdbc的正确方法是什么?
我的脚本开头是
#!/usr/bin/env kscript
@file:DependsOn("oracle.jdbc:ojdbc8:12.2.0.1")
@file:MavenRepository("infosynergi","http://maven.infosynergi.no" )
import java.sql.*
我收到此错误:
[kscript]解决依赖项... [kscript]解决 oracle.jdbc:ojdbc8:12.2.0.1 ...线程“ main”中的异常 java.lang.NoClassDefFoundError:org / ietf / jgss / GSSException 在com.ning.http.client.providers.netty.NettyAsyncHttpProvider(NettyAsyncHttpProvider.java:177) 在org.sonatype.aether.connector.async.AsyncRepositoryConnector.getDefaultProvider(AsyncRepositoryConnector.java:246) 在org.sonatype.aether.connector.async.AsyncRepositoryConnector.getProvider(AsyncRepositoryConnector.java:241) 在org.sonatype.aether.connector.async.AsyncRepositoryConnector。(AsyncRepositoryConnector.java:154) 在org.sonatype.aether.connector.async.AsyncRepositoryConnectorFactory.newInstance(AsyncRepositoryConnectorFactory.java:106) 在org.sonatype.aether.impl.internal.DefaultRemoteRepositoryManager.getRepositoryConnector(DefaultRemoteRepositoryManager.java:346) 在org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:453) 在org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216) 在org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193) 在org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:281) 在org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)处 在org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:191) 在org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:333) 在com.jcabi.aether.Aether.fetch(Aether.java:228) 在com.jcabi.aether.Aether.resolve_aroundBody2(Aether.java:180) 在com.jcabi.aether.Aether $ AjcClosure3.run(Aether.java:1) 在org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 在com.jcabi.aspects.aj.MethodLogger.wrap(MethodLogger.java:208) 在com.jcabi.aspects.aj.MethodLogger.ajc $ inlineAccessMethod $ com_jcabi_aspects_aj_MethodLogger $ com_jcabi_aspects_aj_MethodLogger $ wrap(MethodLogger.java:1) 在com.jcabi.aspects.aj.MethodLogger.wrapClass(MethodLogger.java:136) 在com.jcabi.aether.Aether.resolve(Aether.java:177) 在com.jcabi.aether.Aether.resolve_aroundBody0(Aether.java:163) 在com.jcabi.aether.Aether $ AjcClosure1.run(Aether.java:1) 在org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 在com.jcabi.aspects.aj.MethodLogger.wrap(MethodLogger.java:208) 在com.jcabi.aspects.aj.MethodLogger.ajc $ inlineAccessMethod $ com_jcabi_aspects_aj_MethodLogger $ com_jcabi_aspects_aj_MethodLogger $ wrap(MethodLogger.java:1) 在com.jcabi.aspects.aj.MethodLogger.wrapClass(MethodLogger.java:136) 在com.jcabi.aether.Aether.resolve(Aether.java:156) 在kscript.app.DependencyUtilKt.resolveDependenciesViaAether(DependencyUtil.kt:77) 在kscript.app.DependencyUtilKt.resolveDependencies(DependencyUtil.kt:51) 在kscript.app.KscriptKt.main(Kscript.kt:158) 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法) 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.base / java.lang.reflect.Method.invoke(Method.java:566) 在org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:61) 在org.jetbrains.kotlin.runner.Main.run(Main.kt:109) 在org.jetbrains.kotlin.runner.Main.main(Main.kt:119)处由于:java.lang.ClassNotFoundException:org.ietf.jgss.GSSException 在java.base / java.net.URLClassLoader.findClass(URLClassLoader.java:471) 在java.base / java.lang.ClassLoader.loadClass(ClassLoader.java:588) 在java.base / java.lang.ClassLoader.loadClass(ClassLoader.java:521) ...还有38
答案 0 :(得分:3)
您的脚本是正确的。这是kscript中的已知错误,请参见https://github.com/holgerbrandl/kscript/issues/239。目前唯一的解决方法是使用java8。
更新 此问题已在kscript v3.0中修复