Zaczynam poznawać gradle. Czytam tutoriale. Jednak natrafiłem na mały problem, który pewnie dla was będzie trywialny do rozwiązania lecz ja nie znalazłem rozwiązania, które by zadziałało (bo samych niby-rozwiązań tego problemu znalazłem kilka).
Mianowicie mam jedną, prostą jak konstrukcja cepa, klasę Game.java z metodą main():
package kkk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Game {
public static void main(String[] args) {
new Game();
}
public Game() {
LOGGER.info("Works!");
}
private static final Logger LOGGER = LoggerFactory.getLogger(Game.class);
}
oraz build.gradle
group 'kkk'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.slf4j:slf4j-api:1.7.21')
compile('org.slf4j:slf4j-simple:1.7.21')
testCompile('junit:junit:4.12')
}
jar {
manifest {
attributes('Main-Class' : 'kkk.Game')
}
}
Przy próbie zbudowania jara, sam jar się oczywiście tworzy ale tak jakby był bez dependencji w środku, bo już przy próbie uruchomienia go:
java -jar nazwa_jara_wersja.jar
to otrzymuję komunikat:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at kkk.Game.<clinit>(Game.java:20)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
A pytanie wiadomo jakie będzie. Co dopisać, by budowany jar zawierał wszystkie potrzebne dependencje?