Проблема заключается в пути к классам. Если вы заглянете внутрь файла META-INF/MANIFEST.mf
, вы увидите, что он установлен на:
Class-Path: commons-email-1.5.jar javax.mail-1.5.6.jar activation-1.1.
jar
Когда java работает, он не знает, где что-то из этого, ему также требуется время выполнения groovy, чтобы понять ваш код groovy.
Самый простой способ сделать это - объединить все ваши зависимости в " fat-jar ", а самый простой способ сделать это с Gradle - отличный плагин Shadow-jar .
Если вы добавите следующее в свой блок plugins
в build.gradle
:
id 'com.github.johnrengelman.shadow' version '5.0.0'
(Вы можете удалить блок jar
и строку, управляющую исходными наборами)
Затем запустите ./gradlew shadowJar
Вы получите файл с банкой emailer-all.jar
Который можно запустить:
$ java -jar build/libs/emailer-all.jar
Hello world.
Для полноты вот полный файл build.gradle:
plugins {
id 'groovy'
id 'application'
id 'com.github.johnrengelman.shadow' version '5.0.0'
}
repositories {
jcenter()
mavenCentral()
}
dependencies {
implementation 'org.codehaus.groovy:groovy-all:2.5.6'
testImplementation 'org.spockframework:spock-core:1.2-groovy-2.5'
implementation 'org.apache.commons:commons-email:1.5'
}
mainClassName = 'us.company.emailer.App'