我有使用gradle构建的jar,每当我尝试运行它时都会出错。
$ java -jar com.my.company.app-1.0.jar
Error: Could not find or load main class com.my.company.App
然而,当我看到jar内容时,课程显然就在那里。
$ jar tf com.my.company.app-1.0.jar | grep App
com/my/company/App.class
此外,如果我提取jar内容并直接运行该类,它可以工作:
$ jar xf com.my.company.app-1.0.jar
$ java com.my.company.App
Hey, I'm running
清单看起来像这样:
Manifest-Version: 1.0
Main-Class: com.my.company.App
Implementation-Version: 1.0
我已经尝试并查看了我能想到的每一个常见的嫌疑人,并且无法弄清楚为什么当它被打包在一个罐子里时这个东西不会运行。班级本身看起来也很好:
package com.my.company;
public class App {
public static void main(String[] args){
用于创建jar的gradle文件部分:
task createJar(type: Jar){
manifest {
attributes 'Main-Class' : 'com.my.company.App',
'Implementation-Version' : version
}
baseName = project.name
// grabs all dependencies and adds to Jar
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
我很难过。