Creé una pequeña aplicación mqtt usando la biblioteca eclipse paho mqtt en kotlin con Gradle en Intellij IDE. funciona bien cuando lo ejecuto a través de Intellij, pero cuando lo construyo y ejecuto el archivo jar que ...

1
tyczj 15 mar. 2021 a las 00:16

2 respuestas

La mejor respuesta

La forma en que inicia su aplicación no incluye las dependencias, lo que significa que su controlador MQTT y las dependencias de Kotlin no están incluidas.

Haga lo siguiente:

gradle distZip
# alternatively
gradle distTar

Esto creará un archivo zip / tar que contiene todas las dependencias y un script de inicio. Úselo para iniciar su aplicación.

1
Jens Baitinger 14 mar. 2021 a las 22:54

Podría considerar el complemento Shadow, ya que es sencillo de usar. Tu build.gradle se vería así:

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.4.31'
    
    // Shadow plugin
    id 'com.github.johnrengelman.shadow' version '6.1.0'
    id 'java'
}

group = 'me.package'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    maven {
        url "https://repo.eclipse.org/content/repositories/paho-snapshots/"
    }
}

dependencies {
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
    testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
}

test {
    useJUnit()
}

compileKotlin {
    kotlinOptions.jvmTarget = '1.8'
}

compileTestKotlin {
    kotlinOptions.jvmTarget = '1.8'
}

application {
    mainClassName = 'com.publisher.MainKt'
}

tasks.jar {
    manifest {
        attributes 'Main-Class': 'com.publisher.MainKt'
    }
}

Entonces, su JAR gordo se genera en el directorio /build/libs con todas las dependencias incluidas.

0
Adonias Alcântara 15 mar. 2021 a las 00:17