linux - Groovy:找不到适合的 ClassLoader 以供抓取

标签 linux groovy

我知道还有大约 10 个关于这个主题的帖子,但现在没有一个答案对我有用,甚至 my own previous post 也不行。当我之前遇到这个问题时,因为当时它在我的 CentOS linux 服务器上工作得很好,但是当我在我的 Mac 上从 IntelliJ 运行它时失败了。

现在我遇到了相反的问题。它可以在我的 Mac 上运行,但不能在我的 Linux 服务器上运行。我刚刚迁移到一个新的 CentOS 7 服务器,现在当我从我的 CentOS 7 服务器上的命令行运行它时它不工作。

这是我的脚本的停止:

#!/usr/bin/env groovy

@Grab('mysql:mysql-connector-java:5.1.25')
@GrabConfig(systemClassLoader = true)

import groovy.sql.Sql
import groovy.util.GroovyScriptEngine

String reportdate
if (args.length > 0) {
        reportdate = args[0]

} else {
        def today = new Date()
        def yesterday = today - 1
        reportdate = yesterday.format("yyyy-MM-dd")
}

这是错误输出:

$ ./smart_daily_fetch.groovy 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: No suitable ClassLoader found for grab

java.lang.RuntimeException: No suitable ClassLoader found for grab
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
    at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:175)
    at groovy.grape.GrapeIvy$chooseClassLoader.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:241)
    at groovy.grape.Grape.grab(Grape.java:141)
    at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:283)
    at org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:308)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:846)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:550)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:526)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:503)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:302)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:281)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:197)
    at groovy.lang.GroovyShell$2.run(GroovyShell.java:215)
    at groovy.lang.GroovyShell$2.run(GroovyShell.java:213)
    at java.security.AccessController.doPrivileged(Native Method)
    at groovy.lang.GroovyShell.run(GroovyShell.java:213)
    at groovy.lang.GroovyShell.run(GroovyShell.java:159)
    at groovy.ui.GroovyMain.processOnce(GroovyMain.java:550)
    at groovy.ui.GroovyMain.run(GroovyMain.java:337)
    at groovy.ui.GroovyMain.process(GroovyMain.java:323)
    at groovy.ui.GroovyMain.processArgs(GroovyMain.java:120)
    at groovy.ui.GroovyMain.main(GroovyMain.java:100)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
    at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)

1 error

最佳答案

Linux 发行版附带的和存储库中可用的版本通常已经过时了。我推荐 sdkman 来管理 groovy/gradle/grails 和许多其他 sdk 的版本。

在这里获取:

http://sdkman.io/

关于linux - Groovy:找不到适合的 ClassLoader 以供抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949696/

相关文章:

C 回文程序 - 对 main 的 undefined reference

c++ - SonarQube 包装器在启动时给出 JVM 错误

java - Gradle Groovy项目依赖于Java项目

grails - 如果URL不包含额外路径,如何显示身份验证页面?

java - Maven 不运行由 groovy 编译器生成的 TestNG 测试

java - 如何在 Java/Groovy 中开发数据透视表

linux - 登录到 sqlplus 为什么它总是打印用户名?

linux - 如何不使用正则表达式和 sed 检测结尾 '/'?

c - 如何编译静态库

Grails 与 joinTable 的一对多映射