JMS依赖关系无法解决?

时间:2018-11-30 06:26:29

标签: java docker gradle

嗨,我创建了一个docker-compose.yml文件作为波纹管配置

version: '3'
services:
  activemq:
    image: webcenter/activemq:latest
    ports:
      - 8161:8161
      - 61616:61616
      - 61613:61613
    environment:
      ACTIVEMQ_NAME: amq
      ACTIVEMQ_REMOVE_DEFAULT_ACCOUNT: 'True'
      ACTIVEMQ_ADMIN_LOGIN: admin
      ACTIVEMQ_ADMIN_PASSWORD: admin
    volumes:
      - /container_data/activemq/data:/data/activemq
      - /container_data/activemq/log:/var/log/activemq

我的gradle配置如下:

task startDocker(type: Exec) {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        commandLine 'cmd', '/c', 'docker-compose', '-f', './docker-compose.yml', 'up', '-d'
    } else {
        commandLine 'docker-compose', '-f', './docker-compose.yml', 'up', '-d'
    }
}

jar  {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': version,
                'Main-Class': 'com.jms.MyServer'
    }
}

当我独立运行我的Java应用程序时,它可以正常运行 我正在使用以下命令中的配置:

docker container inspect <container-id>

但是当我运行 jar 文件时,找不到 jms

的类

以下是我使用jar运行时遇到的错误

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Destination
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)

如何运行jar文件并解决此错误?

1 个答案:

答案 0 :(得分:1)

我猜您有jms依赖关系,这些依赖关系未打包在jar中,因此不能作为独立运行。

如果要将依赖项打包到jar中,则可以使用shadowone-jar之类的东西,或者也很难手动推出自己的解决方案。

另一种选择是使用application plugin创建包含

的zip或tar。
  1. 你的罐子
  2. 依赖罐
  3. 启动脚本
相关问题