包装输出从groovy到一个罐子

时间:2015-10-06 19:19:12

标签: java groovy jar executable-jar

我尝试了一个非常简单的groovy脚本

class HelloGroovy {
    public static void main(args) {
        println("hello groovy")
    }
}

并通过.class

将其编译为groovy文件
mkdir out && groovyc helloGroovy.groovy

out目录的唯一内容是单个类文件

cd out && ls
> HelloGroovy.class

我尝试将这个类打包成一个以HelloGroovy为切入点的jar。

jar cfe foo.jar HelloGroovy HelloGroovy.class

但是当我尝试运行生成的jar时,无法使用java -jar foo.jar

加载主类
java -jar foo.jar
> Error: could not find or load main class HelloGroovy

我检查了jar文件,清单列表HelloGroovyMain-Classjavap HelloGroovy.class显示有一个带有相应参数结构的main方法。

public class HelloGroovy implements groovy.lang.GroovyObject {
  public static transient boolean __$stMC;
  public HelloGroovy();
  public static void main(java.lang.String...);
  protected groovy.lang.MetaClass $getStaticMetaClass();
  public groovy.lang.MetaClass getMetaClass();
  public void setMetaClass(groovy.lang.MetaClass);
  public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
  public java.lang.Object getProperty(java.lang.String);
  public void setProperty(java.lang.String, java.lang.Object);
} 

为什么java不能找到HelloGroovy类并执行main方法?

对我来说,程序将无法打印是有道理的,因为据我所知,groovy标准库不在类路径上。但是,我仍然希望它能够找到原来的课程而且很困惑。

0 个答案:

没有答案