>

안녕하세요. 아래 구성으로 하나의 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'
    }
}

내 자바 응용 프로그램을 독립적으로 실행할 때 다음과 같이 잘 실행됩니다. 다음 명령에서 구성을 사용하고 있습니다 :

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

    항아리 안에 포장되어 있지 않은 독립형으로 실행할 수없는 jms 종속성이 있다고 생각합니다.

    병에 의존성을 담으려면 그림자 나 한 병 또는 자신의 솔루션을 수동으로 굴리는 것이 어렵지 않은 것을 사용할 수 있습니다.

    또 다른 옵션은 애플리케이션 플러그인을 사용하여 zip 또는 tar를 포함하는 것입니다

    <올>

    네 병

    종속성 항아리

    시작 스크립트

  • 이전 memcached - Drupal settingsphp에서 탄력적 캐시로 memcache를 구성하는 방법
  • 다음 Spotfire 사례 진술