Это должно быть очень просто, все, что я хочу сделать, это экспортировать этот 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](https://i.stack.imgur.com/XJh42.png)
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);
}
}