这应该非常简单,我只想将包含在src/main/java默认包中的java类HelloWorld.java导出到一个可运行的jar中。它有一个依赖的joda时间,我可以得到阴影来构建它,但是每次我得到这个错误。
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这是我的设置和您看到的错误,因为eclipse版本的gradle已经过时了。此外,我用来构建它的命令是gradle clean,然后是项目根目录中的gradle shadow。

最后这里是我的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);
}
}发布于 2020-02-13 19:25:16
dependencies {
implementation "joda-time:joda-time:2.2"
implementation "junit:junit:4.12"
}你为什么要用joda时间?为什么是2.2版?看看https://mvnrepository.com/artifact/joda-time/joda-time,您确定java.time包是否不够吗?
https://stackoverflow.com/questions/60214836
复制相似问题