如何在kscript(Kotlin)中使用外部存储库?

时间:2019-07-29 12:42:31

标签: kotlin

使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

1 个答案:

答案 0 :(得分:3)

您的脚本是正确的。这是kscript中的已知错误,请参见https://github.com/holgerbrandl/kscript/issues/239。目前唯一的解决方法是使用java8。

更新 此问题已在kscript v3.0中修复