嗨,我创建了一个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文件并解决此错误?
答案 0 :(得分:1)
我猜您有jms依赖关系,这些依赖关系未打包在jar中,因此不能作为独立运行。
如果要将依赖项打包到jar中,则可以使用shadow或one-jar之类的东西,或者也很难手动推出自己的解决方案。
另一种选择是使用application plugin创建包含
的zip或tar。