Java 科特林+;Gradle runnable jar-依赖性导致;无法找到或加载主类“;

Java 科特林+;Gradle runnable jar-依赖性导致;无法找到或加载主类“;,java,gradle,kotlin,Java,Gradle,Kotlin,渐变生成文件: 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' appl

渐变生成文件:

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()
    }
}
package com.anivive
导入com.anivive.util.ExampleClass
对象主体{
@JvmStatic
趣味主线(args:Array){
ExampleClass.exampleMethod()
}
}
因此,我试图构建一个可运行的jar文件,该文件将从依赖项“anivive:Import_Utils:1.2.44”中的类调用单个方法

如果我删除依赖项,并将main方法更改为just
println(“Test”)
,jar将通过
java-jarbuild/libs/jarFile.jar运行良好,并将打印出
Test

但是,在包含依赖项的情况下,当尝试从依赖项调用函数时,每当我尝试运行Jar文件时,都会出现
错误:找不到或加载主类com.anivive.main
。我怀疑这与在packagecloud上托管jar文件有关,但我很惊讶这是一个问题,因为我可以在IntelliJ上运行这个程序


有什么问题?

这里也有同样的问题。我已经检查了jar文件中的实际路径,它们是正确的。它就是找不到类,这让我觉得类路径是错误的。我正在为gradle使用Kotlin DSL@对不起,我从来没有解决过这个问题。我最终放弃了。我使用了gradle的
应用程序
插件,该插件在
build\distributions
中创建了一个名为distribution的捆绑包,该捆绑包被正确打包,以便提供所有依赖项,并且在打包的
bin
文件夹中有两个脚本,一个用于Windows,一个用于*nixes,可用于从命令行启动应用程序。相当整洁!它甚至会让您感到不安,因为您只需要将
add./build/distributions/packagename-0.1.tar”/app
添加到
Dockerfile
。我无法在上一条评论中写入更多文本,但
Dockerfile
中的
add
行会自动将tarball提取到指定的容器路径。