我有一个工作的groovy脚本 - myscript.groovy
使用GroovyWrapper后:groovy GroovyWrapper -m myscript -c
下一步是运行我编译的代码:java -jar myscript.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
}
}
}
我无法理解:我哪里错了,错在哪里。
答案 0 :(得分:1)
注意:我已删除之前的答案,因为它与真正的问题无关。
基本上,GroovyWrapper创建的jar不起作用,因为CSVParser
类没有包含在jar中。您可以构建jar文件并使用在线decompiler进行检查。
解决方案是轻松修改您使用的构建脚本。我已经在GitHub和example Guillame Laforge上创建了一个twitted项目来查看。他帮了忙!