执行在"mvn install"中生成的 JAR "Could not find or load main class"



我正在尝试用Maven从Groovy代码生成JAR文件。它工作得很好,类在jar文件中,但它给了我错误Error: Could not find or load main class me.strafe.hello.Main

pom.xml

<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<configuration>
<tasks>
<mkdir dir="${basedir}/src/main/groovy"/>
<taskdef name="groovyc"
classname="org.codehaus.groovy.ant.Groovyc">
<classpath refid="maven.compile.classpath"/>
</taskdef>
<mkdir dir="${project.build.outputDirectory}"/>
<groovyc destdir="${project.build.outputDirectory}"
srcdir="${basedir}/src/main/groovy/"
listfiles="true">
<classpath refid="maven.compile.classpath"/>
</groovyc>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>me.strafe.hello.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

这是我从Groovy文档中获取的。

树:

├── pom.xml
├── src
│   └── main
│       └── groovy
│           └── Main.groovy

Main.groovy:

package me.strafe.hello
class Main {
static void main(String[] args) {
println "Hello, World!"
}
}

我也用过gradle,但是我不太熟悉,因为我以前用过maven。

如果您像这样运行程序,它将工作:

java -cp my.jar me.strafe.hello.Main

确保在类路径中添加任何其他jar(如groovy jar),类似于这样(文件分隔符在Linux上是:,在Windows上是;):

java -cp libs/groovy-all.jar:my.jar me.strafe.hello.Main

您还可以配置POM以生成"fat jar";它包含了单个jar中的依赖项,以使此操作更简单。

如果您真的希望您的jar是可运行的,那么您应该像上面那样做,但是还要将Main-Class声明添加到jar的清单中,这样您就不需要像上面那样在命令行中指定主类。

一旦你做了这两件事(在Manifest中声明的fat jar和Main-Class),这个命令也会起作用:

java -jar my.jar

相关内容

  • 没有找到相关文章

最新更新