Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行Docker run时出现Docker容器错误_Java_Docker_Jar_Dockerfile - Fatal编程技术网

Java 运行Docker run时出现Docker容器错误

Java 运行Docker run时出现Docker容器错误,java,docker,jar,dockerfile,Java,Docker,Jar,Dockerfile,我为一个简单的java应用程序创建了一个docker容器 Docker映像的创建已正确完成。 当我运行docker run时,我遇到了一些与java相关的问题,但是当我使用IntelliJ运行它时,应用程序运行得很好 docker错误: PS C:\Windows\system32>docker运行测试 错误:发生JNI错误,请检查安装并重试 线程“main”java.lang.NoClassDefFoundError中的异常:javax/jms/JMSException 位于java.lang

我为一个简单的java应用程序创建了一个docker容器

Docker映像的创建已正确完成。 当我运行docker run时,我遇到了一些与java相关的问题,但是当我使用IntelliJ运行它时,应用程序运行得很好

docker错误:

PS C:\Windows\system32>docker运行测试 错误:发生JNI错误,请检查安装并重试 线程“main”java.lang.NoClassDefFoundError中的异常:javax/jms/JMSException 位于java.lang.Class.getDeclaredMethods0(本机方法) 位于java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 位于java.lang.Class.privateGetMethodRecursive(Class.java:3048) 位于java.lang.Class.getMethod0(Class.java:3018) 位于java.lang.Class.getMethod(Class.java:1784) 位于sun.launcher.launchelper.validateMainClass(launchelper.java:544) 在sun.launcher.LaunchHelper.checkAndLoadMain(LaunchHelper.java:526) 原因:java.lang.ClassNotFoundException:javax.jms.JMSException 位于java.net.URLClassLoader.findClass(URLClassLoader.java:382) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有7个

Dockerfile:

提前谢谢大家,,
Mondher

问题可能是您的jar缺少某些依赖项。Intellij在构建路径中可能具有所需的依赖项,这就是应用程序从该环境运行的原因。您是在使用maven还是构建工具来创建jar?

您:COPY/target/application.jar/tmp/application.jar 尝试:复制/usr/src/myapp

你:WORKDIR/tmp 尝试:WORKDIR/usr/src/myapp

找它写的,应该有帮助

运行javac Main.java
CMD[“java”,“Main”]

您好,我正在使用Maven构建项目。如果您解压缩jar,是否能够验证所有必需的依赖项都可用?我解压缩了jar文件,只找到了.class文件、pom.xml和pom.properties。我正在复制包含应用程序所有类的jar文件。我认为它不会帮助只运行Main.java,因为它依赖于其他类。先忘掉docker吧。您可以尝试在没有Intellij的情况下在命令行上运行jar吗。我怀疑您是如何创建jar文件的。它可能没有所需的所有运行时/依赖项。
FROM openjdk:8-jre
COPY /target/application.jar /tmp/application.jar
WORKDIR /tmp
ENTRYPOINT ["java", "-cp", "application.jar", "Package.ClassWithMain"]