Kotlin + Gradle runnable jar - зависимость вызывает "Не удалось найти или загрузить основной класс" - PullRequest
0 голосов
/ 06 июня 2018

Файл сборки Gradle:

buildscript {
    ext.kotlin_version = '1.2.41'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.anivive'
version '0.1'

apply plugin: 'kotlin'

sourceSets {
    main.java.srcDirs += 'src/main/kotlin/'
    test.java.srcDirs += 'src/test/kotlin/'
}

repositories {
    mavenLocal()
    maven {
        url "https://packagecloud.io/anivive/anivive/maven2"
    }
    mavenCentral()
}

dependencies {
    compile 'anivive:Import_Utils:1.2.44'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

jar {
    baseName = 'XMLModelBuilder'
    version = '0.1'
    manifest {
        attributes 'Main-Class': 'com.anivive.Main'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

Структура файла:

src
 - main
   - kotlin
     - com
       - anivive
          - Main.kt

Main.kt:

package com.anivive

import com.anivive.util.ExampleClass

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        ExampleClass.exampleMethod()
    }
}

Итак, я пытаюсь собратьисполняемый файл JAR, который будет вызывать один метод из класса в зависимости 'anivive: Import_Utils: 1.2.44'.

Если я удаляю зависимость и изменяю свой основной метод на println("Test"), jarбудет нормально работать через java -jar build/libs/jarFile.jar и будет выводить Test.

Однако, с учетом зависимости и при попытке вызвать из нее функцию, я получу Error: Could not find or load main class com.anivive.Main всякий раз, когда пытаюсь запуститьJar файл.Я подозреваю, что это как-то связано с размещением jar-файла на packagecloud, но я удивлен, что это проблема, учитывая, что я могу нормально запустить программу из IntelliJ.

Что дает?

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