title: Java - Gradle jar created by FatJar task won't work
body: <p>I've been looking for a solution for this for 4 days now with no success,</p>
  
  <p>first doing the normal Gradle build task produced a tiny <strong>7kB</strong> jar files which obviously didn't work, then i added the jar configuration for the main class:</p>
  
  <pre><code>jar {
      manifest {
          attributes 'Main-Class': 'Main'
      }
  }
  </code></pre>
  
  <p>It's <strong>2MB</strong> now!</p>
  
  <p>Still not good enough,
  then i found the <em>fatJar/uberJar/shadow</em> tasks, said to be synonymous to the same thing so i tried <em>clean</em> then <em>fatJar</em> tasks on another small <em>RMI app</em> that will run on the server and it worked great, copied it to the main app, it produces and <strong>60MB</strong> jar file which looks good but it won't work for some reason,</p>
  
  <p>The app runs perfectly from my IDE (<strong>IntelliJIDEA</strong>) but the jar produced just does nothing.</p>
  
  <p>So my last option is to consult experts so here we go:</p>
  
  <p>This's the result of the <em>clean</em> task:</p>
  
  <blockquote>
    <p>6:11:10 PM: Executing external task 'clean'...</p>
    
    <p>:clean</p>
    
    <p>BUILD SUCCESSFUL</p>
    
    <p>Total time: 0.774 secs</p>
    
    <p>6:11:11 PM: External task execution finished
    'clean'.</p>
  </blockquote>
  
  <p>This's the result of the <em>fatJar</em> task:</p>
  
  <blockquote>
    <p>6:13:13 PM: Executing external task 'fatJar'...</p>
    
    <p>Note: Some input files use unchecked or unsafe operations.</p>
    
    <p>Note: Recompile with -Xlint:unchecked for details.</p>
    
    <p>:compileJava</p>
    
    <p>:processResources</p>
    
    <p>:classes</p>
    
    <p>:fatJar</p>
    
    <p>BUILD SUCCESSFUL</p>
    
    <p>Total time: 24.831 secs</p>
    
    <p>6:13:37 PM: External task execution finished 'fatJar'.</p>
  </blockquote>
  
  <p>This's my <strong>build.gradle</strong> file</p>
  
  <pre><code>group 'Yasmeena'
  version '1.0-SNAPSHOT'
  
  apply plugin: 'java'
  
  compileJava.options.encoding = 'UTF-8'
  
  sourceCompatibility = 1.8
  
  jar {
      manifest {
          attributes 'Main-Class': 'Main'
      }
  }
  
  task fatJar(type: Jar) {
      manifest {
          attributes 'Implementation-Title': 'Gradle Jar',
                  'Implementation-Version': version,
                  'Main-Class': 'Main'
      }
      baseName = project.name + '-all'
      from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
      with jar
  }
  
  allprojects {
      repositories {
          mavenCentral()
          maven { url 'https://jitpack.io' }
      }
  }
  
  dependencies {
  
      compile 'com.mchange:c3p0:0.9.5.2'
      compile 'commons-beanutils:commons-beanutils:1.9.3'
  //    compile 'org.apache.commons:commons-collections3:2.2-SNAPSHOT'
      compile 'commons-digester:commons-digester:2.1'
      compile 'commons-logging:commons-logging:1.2'
      compile 'commons-validator:commons-validator:1.6'
      compile 'org.controlsfx:controlsfx:8.40.13'
      compile 'com.jfoenix:jfoenix:1.7.0'
      compile 'com.mchange:mchange-commons-java:0.2.11'
      compile 'com.github.PlusHaze:TrayNotification:-SNAPSHOT'
      compile 'com.google.firebase:firebase-admin:5.3.0'
  
      compile 'org.jetbrains:annotations:15.0'
      compile 'org.slf4j:slf4j-simple:1.7.25'
  
      compile group: 'org.postgresql', name: 'postgresql', version: '42.1.4'
      compile group: 'com.impossibl.pgjdbc-ng', name: 'pgjdbc-ng', version: '0.6'
      compile group: 'org.eclipse.jdt.core.compiler', name: 'ecj', version: '4.6.1'
      compile group: 'de.jensd', name: 'fontawesomefx', version: '8.9'
      compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
      compile group: 'com.lowagie', name: 'itext', version: '2.1.7'
      compile group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
  
      compile fileTree(dir: 'lib', include: 'ReportUtilities.jar')
  
      compile('net.sf.jasperreports:jasperreports:6.4.1') {
          exclude group: 'com.itextpdf'
      }
      runtime 'com.itextpdf:itextpdf:5.5.0'
      runtime 'com.itextpdf:itext-pdfa:5.5.0'
  
      testCompile group: 'junit', name: 'junit', version: '4.12'
  }
  </code></pre>
  
  <p>my <em>Main.java</em> class which holds my <code>main</code> method exists directly in the <strong>main -> java</strong> directory</p>
  
  <p>This's my <strong>settings.gradle</strong> file:</p>
  
  <pre><code>rootProject.name = 'Yasmeena'
  </code></pre>
  
  <p>My main method is a simple method that launches the JavaFX application:</p>
  
  <pre><code>public static void main(String[] args) {
          launch(args);
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/ct3UY.png" rel="nofollow noreferrer">This's my project structure</a></p>
  
  <p><strong>UPDATE:</strong></p>
  
  <p>Current state of <strong>build.gradle</strong> file:</p>
  
  <pre><code>group 'Yasmeena'
  version '1.0-SNAPSHOT'
  
  apply plugin: 'java'
  
  compileJava.options.encoding = 'UTF-8'
  
  sourceCompatibility = 1.8
  
  jar {
      manifest {
          attributes 'Main-Class': 'activities.Main'
      }
  }
  
  allprojects {
      repositories {
          mavenCentral()
          maven { url 'https://jitpack.io' }
      }
  }
  
  dependencies {
  
      compile 'com.mchange:c3p0:0.9.5.2'
      compile 'commons-beanutils:commons-beanutils:1.9.3'
      compile 'commons-digester:commons-digester:2.1'
      compile 'commons-logging:commons-logging:1.2'
      compile 'commons-validator:commons-validator:1.6'
      compile 'org.controlsfx:controlsfx:8.40.13'
      compile 'com.jfoenix:jfoenix:1.7.0'
      compile 'com.mchange:mchange-commons-java:0.2.11'
      compile 'com.github.PlusHaze:TrayNotification:-SNAPSHOT'
      compile 'com.google.firebase:firebase-admin:5.3.0'
  
      compile 'org.jetbrains:annotations:15.0'
      compile 'org.slf4j:slf4j-simple:1.7.25'
  
      compile group: 'org.postgresql', name: 'postgresql', version: '42.1.4'
      compile group: 'com.impossibl.pgjdbc-ng', name: 'pgjdbc-ng', version: '0.6'
      compile group: 'org.eclipse.jdt.core.compiler', name: 'ecj', version: '4.6.1'
      compile group: 'de.jensd', name: 'fontawesomefx', version: '8.9'
      compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
      compile group: 'com.lowagie', name: 'itext', version: '2.1.7'
      compile group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
  
      compile fileTree(dir: 'lib', include: 'ReportUtilities.jar')
  
      compile('net.sf.jasperreports:jasperreports:6.4.1') {
          exclude group: 'com.itextpdf'
      }
      runtime 'com.itextpdf:itextpdf:5.5.0'
      runtime 'com.itextpdf:itext-pdfa:5.5.0'
  
      testCompile group: 'junit', name: 'junit', version: '4.12'
  }
  
  buildscript {
      repositories {
          jcenter()
      }
      dependencies {
          classpath 'eu.appsatori:gradle-fatjar-plugin:0.3'
      }
  }
  
  task fatJar(type: Jar) {
      manifest {
          attributes 'Implementation-Title': 'Gradle Jar',
                  'Implementation-Version': version,
                  'Main-Class': 'activities.Main',
                  'Class-Path': ". ${configurations.compile.collect { it.getName() }.join(' ')}"
      }
      baseName = project.name + '-all'
      from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
      with jar
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/JCMWA.png" rel="nofollow noreferrer">Current state of project structure</a></p>
  
  <p>Inside the jar file there's an activities folder which contains a Main.class file</p>
  
  <p><strong>UPDATE:</strong></p>
  
  <p><em>jar file -> META-INF -> MANIFEST.MF</em></p>
  
  <pre><code>Manifest-Version: 1.0
  Implementation-Title: Gradle Jar
  Implementation-Version: 1.0-SNAPSHOT
  Class-Path: . ReportUtilities.jar c3p0-0.9.5.2.jar commons-beanutils-1
   .9.3.jar commons-digester-2.1.jar commons-logging-1.2.jar commons-val
   idator-1.6.jar controlsfx-8.40.13.jar jfoenix-1.7.0.jar mchange-commo
   ns-java-0.2.11.jar TrayNotification--SNAPSHOT.jar firebase-admin-5.3.
   0.jar annotations-15.0.jar slf4j-simple-1.7.25.jar postgresql-42.1.4.
   jar pgjdbc-ng-0.6.jar ecj-4.6.1.jar fontawesomefx-8.9.jar commons-col
   lections-3.2.2.jar itext-2.1.7.jar olap4j-1.2.0.jar jasperreports-6.4
   .1.jar google-api-client-1.22.0.jar google-api-client-gson-1.22.0.jar
    google-http-client-1.22.0.jar json-20160810.jar guava-20.0.jar googl
   e-cloud-storage-1.2.1.jar slf4j-api-1.7.25.jar netty-all-4.0.32.Final
   .jar bcmail-jdk14-138.jar bcprov-jdk14-138.jar xercesImpl-2.11.0.jar 
   jcommon-1.0.23.jar jfreechart-1.0.19.jar castor-xml-1.3.3.jar jackson
   -core-2.1.4.jar jackson-databind-2.1.4.jar jackson-annotations-2.1.4.
   jar lucene-core-4.5.1.jar lucene-analyzers-common-4.5.1.jar lucene-qu
   eryparser-4.5.1.jar core-3.2.1.jar icu4j-57.1.jar google-oauth-client
   -1.22.0.jar google-http-client-jackson2-1.22.0.jar google-http-client
   -gson-1.22.0.jar httpclient-4.0.1.jar google-cloud-core-1.2.1.jar goo
   gle-cloud-core-http-1.2.1.jar google-api-services-storage-v1-rev100-1
   .22.0.jar castor-core-1.3.3.jar commons-lang-2.6.jar javax.inject-1.j
   ar stax-1.2.0.jar stax-api-1.0-2.jar lucene-queries-4.5.1.jar lucene-
   sandbox-4.5.1.jar guava-jdk5-17.0.jar httpcore-4.0.1.jar commons-code
   c-1.3.jar joda-time-2.9.2.jar api-common-1.1.0.jar gax-1.4.1.jar prot
   obuf-java-util-3.3.0.jar proto-google-common-protos-0.1.12.jar proto-
   google-iam-v1-0.1.12.jar google-auth-library-credentials-0.7.0.jar go
   ogle-auth-library-oauth2-http-0.7.0.jar google-http-client-appengine-
   1.21.0.jar google-http-client-jackson-1.21.0.jar stax-api-1.0.1.jar j
   akarta-regexp-1.4.jar auto-value-1.2.jar threetenbp-1.3.3.jar protobu
   f-java-3.3.0.jar jackson-core-asl-1.9.11.jar bctsp-jdk14-1.38.jar bcp
   rov-jdk14-1.38.jar bcmail-jdk14-1.38.jar xml-apis-1.4.01.jar jsr305-3
   .0.0.jar gson-2.7.jar
  Main-Class: activities.Main
  </code></pre>