Невозможно запустить построенный gradle проект с shadowJar NoClassDefFoundError - PullRequest
0 голосов
/ 13 февраля 2020

Это должно быть очень просто, все, что я хочу сделать, это экспортировать этот java класс HelloWorld. java, содержащийся в стандартном пакете src / main / java, в исполняемый jar. У него есть одна зависимость joda-time, и я могу получить тень для ее построения, но каждый раз, когда я получаю эту ошибку.

Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalTime
        at HelloWorld.main(HelloWorld.java:7)
Caused by: java.lang.ClassNotFoundException: org.joda.time.LocalTime
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 1 more

Вот мои настройки и ошибки, которые вы видите, потому что версия затмения gradle устарела , Кроме того, я использовал команды для его построения: gradle clean, а затем gradle shadow, находясь в каталоге root проекта.

enter image description here

Finnaly вот мой build.gradle и мой HelloWorld. java

plugins {
    id 'java'
    id 'com.github.johnrengelman.shadow' version '5.2.0'
}

repositories {
    mavenCentral()
}

shadowJar {
    manifest {
        attributes 'Main-Class': 'HelloWorld'
    }
    configurations = [project.configurations.compile]
    baseName = 'HelloWorld'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    shadow "joda-time:joda-time:2.2"
    shadow "junit:junit:4.12"
}

import org.joda.time.LocalTime;

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        LocalTime currentTime = new LocalTime();
        System.out.println("The current local time is: " + currentTime);
    }

}

1 Ответ

0 голосов
/ 13 февраля 2020
dependencies {
    implementation "joda-time:joda-time:2.2"
    implementation "junit:junit:4.12"
}

Почему вы используете время йода? Почему версия 2.2? Посмотрите на https://mvnrepository.com/artifact/joda-time/joda-time Вы уверены, что пакет java .time не подходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...