GroovyWrapper java.lang.NoClassDefFoundError:CSVParser

GroovyWrapper java.lang.NoClassDefFoundError:CSVParser,groovy,noclassdeffounderror,Groovy,Noclassdeffounderror,我有一个正常工作的groovy脚本-myscript.groovy 使用GroovyWrapper后:groovy-GroovyWrapper-m myscript-c 下一步是运行我编译的代码:java-jarmyscript.jar 运行后,我出现了一个错误: Exception in thread "main" java.lang.NoClassDefFoundError: CSVParser at pro.run(pro.groovy:1963) at sun.refle

我有一个正常工作的groovy脚本-myscript.groovy

使用GroovyWrapper后:
groovy-GroovyWrapper-m myscript-c

下一步是运行我编译的代码:
java-jarmyscript.jar

运行后,我出现了一个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: CSVParser
    at pro.run(pro.groovy:1963)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    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:1085)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909) bla-bla-bla ... 
下面是从我使用CSVParser类的myscript.groovy中截取的:

def inputPath='D://'

class CSVParser {
    static def parseCSV(file,closure) {
        def lineCount = 0
        file.eachLine() { line ->
            def field = line.tokenize(",")
            lineCount++
            closure(lineCount,field)
        }
    }
}

use(CSVParser.class) {
    filename='filename_for_parsing.txt'
    File file = new File(inputPath,filename)
    if(file.size()>0){
        file.parseCSV { index,field ->
            variable1="${field[0]}"
            variable2="${field[1]}"
            variable3="${field[2]}"
            println variable1
            println variable2
            println variable3                        
        }
    }
}
我不明白:我哪里错了,哪里错了

注意:我已经删除了之前的答案,因为它与真正的问题无关

基本上,GroovyWrapper创建的jar不起作用,因为jar中没有包含
CSVParser
类。您可以构建jar文件并在线检查它


解决方案是稍微修改您使用的构建脚本。我在GitHub和Guillame Laforge上创建了一个项目来看看。他帮忙了

你能提供一个简单的工作示例吗?我发布了工作示例no。不幸的是,你确实没有。什么是
。。。一些代码…
例如?通过工作示例,我指的是准备好复制到控制台并运行的示例代码。好的,更新的答案。再看看它是否有用。它现在工作正常吗?好的。这个剧本很好用。但是试着这样做:
groovygroovywrapper-myscript-c
,然后:
java-jarmyscript.jar
。问题是我想将groovy脚本编译成JavaJAR,但它不适用于这个类。如果我从我的代码中删除它-一切都会好的。是的,你是对的。它不起作用了。脚本主体中声明的类似乎没有添加到最终的jar中——不知道为什么。试图将
CSVParser
类放在一个单独的文件和包中,但它也没有打包。作为一种解决方法,您可以将gradle与发行版或应用程序插件一起使用。也许以后我们会看一看。