2015-09-14 3 views
32

Я как бы схожу с ума от этой ошибки, которую я получаю при запуске JAR-файла, созданного Gradle. Ошибка читает «никакого основного атрибута манифеста, в RxJavaDemo.jar» Я попытался манипулировать свойством Manifest, но я думаю, что забываю добавлять зависимости или что-то к нему. Что я делаю неправильно?Gradle- нет атрибута основного манифеста

apply plugin: 'java' 
apply plugin: 'application' 

mainClassName = 'demo.MainDashboard' 

dependencies { 

    compile files ("H:/Processes/Development/libraries/hikari-cp/HikariCP-2.4.1.jar") 
    compile files ("H:/Processes/Development/libraries/controls-fx/controlsfx.jar") 
    compile files ("H:/Processes/Development/libraries/database_connections/sqlite-jdbc-3.8.6.jar") 
    compile files ("H:/Processes/Development/libraries/guava/guava-18.0.jar") 
    compile files ("H:/Processes/Development/libraries/rxjava/rxjava-1.0.12.jar") 
    compile files ("H:/Processes/Development/libraries/rxjava-extras/rxjava-extras-0.5.15.jar") 
    compile files ("H:/Processes/Development/libraries/rxjavafx/RxJavaFX-1.0.0-RC1-SNAPSHOT.jar") 
    compile files ("H:/Processes/Development/libraries/rxjavaguava/rxjava-guava-1.0.3.jar") 
    compile files ("H:/Processes/Development/libraries/rxjava-jdbc/rxjava-jdbc-0.6.3.jar") 
    compile files ("H:/Processes/Development/libraries/slf4j/slf4j-api-1.7.12.jar") 
    compile files ("H:/Processes/Development/libraries/tom-commons/tom-commons.jar") 

} 

sourceSets { 
    main.java.srcDir "src/main/java" 
    main.resources.srcDir "src/main/resources" 
} 

    jar { 
    manifest { 
    attributes(
     "Class-Path": configurations.compile.collect { it.getName() }.join(' ')) 
    } 
    from configurations.compile.collect { entry -> zipTree(entry) } 
} 

ответ

57

Попробуйте изменить явные признаки, как:

jar { 
    manifest { 
    attributes(
     'Class-Path': configurations.compile.collect { it.getName() }.join(' '), 
     'Main-Class': 'hello.HelloWorld' 
    ) 
    } 
} 

А потом просто изменить 'hello.helloWorld' к классу, который имеет основной метод. В этом случае вы создаете в своем манифесте атрибут, указывающий на этот класс, затем запускается банка.

+0

@ Главный класс «Станислав» - главный класс? Что такое привет и helloWorld в вашем примере? –

+1

@ DanielaMaia это просто полное имя класса, конечно, оно должно быть написано как hello.HelloWorld, где hello - это пакет, в котором находится класс HelloWorld. – Stanislav

+2

Мне нужно было удалить часть 'collect {}', чтобы заставить ее работать для меня. В вашем коде предполагается, что все зависимости находятся в той же папке, что и ваш основной класс. – AutonomousApps

Смежные вопросы