来自groovy来源的可执行jar

时间:2014-03-05 16:35:13

标签: ant groovy executable-jar

我无法找到以下问题的正确答案:从groovy编译源创建可执行jar时,我不能简单地将groovy-all-version.jar包含在lib目录中(就像我在java中所做的那样)但我需要从jar中提取所有类并使用我自己的类打包它们,否则我会得到一个异常。实际情况就是我可能想要使用的所有库。

不清楚?我们来看一个例子。

属于包toto.groovy

titi编译在build目录中,如下所示:

build
    lib
        groovy-all-1.8.4.jar
    titi
        toto.class

并且将包含在jar中的MANIFEST.MF包含以下行:

Main-Class: titi.toto
Class-Path: lib/groovy-all-1.8.4.jar

使用ant中的build.xml目标完成可执行jar创建:

<jar destfile="${build.exe.dir}/${exe.name}" 
    basedir="${build.dir}" 
    manifest="${src.conf.dir}/MANIFEST.MF"
/>

现在,如果我尝试执行jar,我会得到

$ java -jar target/toto.jar 
    Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/Script

(我检查过groovy.lang.Script类是否存在。)

另一方面,如果我通过在groovy-all-version.jar之前添加build任务来解除unjar中的jar,则执行正常。好的,它有效,但它减慢了编译过程,我想了解......

非常感谢任何反馈。

0 个答案:

没有答案