当前位置: 首页 > 知识库问答 >
问题:

静态编程语言Gradle build未运行

陈季
2023-03-14

我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。

Gradle构建脚本:

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: "kotlin-spring"
apply plugin: 'org.springframework.boot'


group 'myapp'
version '1.0'

buildscript {
    ext.kotlin_version = '1.2.21' // Required for Kotlin integration
    ext.spring_boot_version = '1.5.4.RELEASE'
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // Required for Kotlin integration
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-plugin
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"
    }
}

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


jar {
    zip64 true
    manifest {
        attributes 'Main-Class': 'app.main.ApplicationKt'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}


sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    compile("org.jetbrains.kotlin:kotlin-reflect")
    compile group: 'com.typesafe', name: 'config', version: '1.3.2'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile group: 'org.apache.camel', name: 'camel-spring-boot-starter', version: '2.20.2'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '2.0.0.RELEASE'

    compile group: 'org.apache.camel', name: 'camel-quartz2', version: '2.20.2'
    compile group: 'org.apache.camel', name: 'camel-http4', version: '2.20.2'
    compile group: 'org.apache.camel', name: 'camel-docker', version: '2.20.2'
    compile group: 'org.apache.camel', name: 'camel-aws', version: '2.20.2'

    compile group: 'com.jayway.jsonpath', name: 'json-path', version: '2.4.0'
    compile group: 'redis.clients', name: 'jedis', version: '2.9.0'
    compile group: 'joda-time', name: 'joda-time', version: '2.9.9'
    compile group: 'net.gpedro.integrations.slack', name: 'slack-webhook', version: '1.4.0'
    compile group: 'org.json', name: 'json', version: '20180130'
    compile group: 'org.jfree', name: 'jfreechart', version: '1.5.0'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

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

如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:-

Error: Could not find or load main class app.main.ApplicationKt

应用.kt:-

@SpringBootApplication
@ImportResource("classpath*:camel-context.xml")
@ComponentScan("app")
class Application

fun main(args:Array<String>){
    SpringApplication.run(Application::class.java, *args)
}

不知道我到底哪里做错了什么。

共有1个答案

谷德本
2023-03-14

在应用程序中。kt,您没有包声明。根据文件:

源文件的所有内容(例如类和函数)都包含在声明的包中。因此,在上面的示例中,baz()的全名是foo.bar。baz,而Goo的全名是foo.bar.Goo。

如果未指定包,则此类文件的内容属于没有名称的“默认”包。

您可以查看build/class目录以检查类被编译到哪些包中。

要解决此问题,请将包app.main添加到Application.kt文件的顶部。

 类似资料:
  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 我想知道为什么在下面的代码中没有捕捉到异常: 函数的调用方式如下: 但我还是遇到了一个导致应用程序崩溃的异常: 我想说try/catch块会捕获异常,但唉。。。 什么原因导致异常没有被捕获?我想说线程并不重要,因为我使用try/get块来处理线程中的异常。 在Laalto的回答之后,我更新了代码,如下所示(对于那些感兴趣的人):

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 我有一个使用Kotlin 1.0版的Android项目。Android Studio中的0-beta-1038。 我可以在不同的部分使用Kotlin运行它,它在模拟器中编译并工作,但当我尝试使用ReadWriteProperty时,它会给出以下错误消息: 未解析的引用:ReadWriteProperty 类称为首选Utils.kt: build.grade(模块:app) build.grade(

  • 上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我

  • 我是Kotlin开发的新手,我不知道如何处理这个问题。我将以下Kotlin数据类映射到MongoDB集合(Spring data MongoDB): 我想覆盖默认的 id 获取器并返回一个字符串而不是对象 Id。似乎“id”字段名称无法更改,因为我收到消息“不允许自定义id属性的字段名称!自定义名称不会被考虑!“,因此我无法使用始终建议的_id解决方案。 如何才能做到这一点?我错过了什么吗?