2015-09-14 13 views
32

Sto diventando pazzo con questo errore che ottengo quando si esegue un file JAR creato da Gradle. L'errore indica "nessun attributo manifest principale, in RxJavaDemo.jar" Ho provato a manipolare la proprietà Manifest, ma penso che mi sto dimenticando di aggiungere le dipendenze o qualcosa del genere. Cosa sto facendo di sbagliato esattamente?Gradle- no main manifest attributo

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) } 
} 

risposta

57

tenta di modificare gli attributi si manifestano come:

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

E poi basta cambiare 'hello.helloWorld' alla classe, che ha un metodo main. In questo caso, nel tuo manifest fai un attributo, che punta a questa classe, quindi un jar è in esecuzione.

+0

@Stanislav "Main-Class" valore è la classe principale? Cosa sono ciao e ciao mondo nel tuo esempio? –

+1

@DanielaMaia è solo un nome di classe completo, sicuro che deve essere scritto come ciao. HelloWorld, dove ciao è il pacchetto in cui si trova la classe HelloWorld – Stanislav

+2

Ho bisogno di rimuovere la parte 'collect {}' per farlo funzionare per me. Il tuo codice presuppone che tutte le dipendenze si trovino nella stessa cartella della tua classe principale. – AutonomousApps

Problemi correlati