当前位置: 首页 > 知识库问答 >
问题:

为什么我的Groovy主类不能从构建的jar执行?

谭越
2023-03-14
package foo

public class Test { // (Yes, the public keywords here and below are redundant)
    public static void main(String[] args) {
        println "groovy world"
    }
}

在src/main/groovy/foo/test2.java中:

package foo;

public class Test2 {
    public static void main(String[] args) {
        System.out.println("java world");
    }
}

分级文件:

plugins {
    id 'java'
    id 'groovy'
    id 'application'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = 'foo.Test'

repositories {
    mavenCentral()
}
dependencies {
    compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.7'
}
jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

我造了一个罐子:

$ ./gradlew build
$  java -cp build/libs/test-groovy-main.jar foo.Test2
java world

$ java -cp build/libs/test-groovy-main.jar foo.Test
Error: Could not find or load main class foo.Test

我在这里有版本控制中的测试用例:

https://github.com/wu-lee/test-groovy-main

共有1个答案

孔鸿云
2023-03-14

添加from section对我有效:

jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

它将org.codehaus.groovy:groovy-all:2.4.7依赖项放到jar中。

UPD

 类似资料:
  • 尝试将我的java应用程序从Eclipse导出到可运行的jar文件中。(这是一个控制台应用程序) 这是Eclipse中项目目录的外观: 以下是项目的运行配置: 这就是jar创建选项的外观: 最后,这是我得到的错误: 我真的试过了所有的东西,但我很困惑为什么它不运行。主类选择正确,运行配置似乎正确,我尝试了runnable和regular,两者都不起作用。 我尝试过清理、重建,甚至重新制作这个项目,

  • 我写我的代码后Netty的留档,然后我执行: 它构建成功。然后我跑: 它向我提示了一个错误: 异常线程"main"java.lang.NoClassDefFoundError: io/netty/Channel/EventLoopGroup在java.lang.Class.getDeclaredmethod ods0(本地方法)在java.lang.Class.privateGetDeclared

  • 创建jar文件时,我编写了以下java文件: 我将文件命名为MyClass.java。 我通过键入“javac src/main/java/myjar/myclass.java”创建了一个类文件 我通过命令“jar cvf myjar.jar src/main/java/myjar/myclass.class”生成了一个jar文件 在IDE中,我写了“import myjar.myclass”,单

  • 我正在尝试分发一个跨平台的JavaFX应用程序(jar格式),因此用户不需要访问自己的JavaFX库就可以运行该应用程序。显然,最好的选择是使用Maven。 由于这是我第一次使用Maven,而且我不太熟悉它是如何工作的,所以尽管我遵循了各种教程,但我还是遇到了一些问题。 下面是我的。 当我建立这个项目时,一切似乎都很好。未报告任何错误,jar已成功创建。然而,当我尝试执行jar时(使用命令),我得

  • 问题内容: 我如何知道用来构建jar的Java编译器的版本?我有一个jar文件,它可以在三个JDK中的任何一个中构建。我们需要确切地知道哪一个,以便我们证明兼容性。编译器版本是否嵌入在类文件或jar中的某个位置? 问题答案: 您不一定无法从JAR文件本身中分辨出来。 下载十六进制编辑器,然后在JAR中打开一个类文件,并查看字节偏移量4到7。内置了版本信息。 http://en.wikipedia.

  • 首先,我发现了另外两条有类似问题的线索。问题在于,他们没有为字符串使用正确的等号,也没有为他们的特定问题正确设置if语句的格式。 在我的任务中,我需要创建一个名为“猪”的游戏,玩家与计算机对决,在掷骰子时先获得100分。如果玩家在一个回合中掷1,他们不会得到额外的分数。如果玩家掷两个1,那么他们将失去所有分数。我还没有对电脑的回合进行编码,只是专注于玩家。请告诉我我做错了什么。提前非常感谢。 我的