我为一个简单的Java应用程序创建了一个docker容器。
正确创建Docker映像。 当我运行docker run时,我遇到了一些与java有关的问题,但是当我使用IntelliJ运行它时,该应用程序运行良好。
docker错误:
PS C:\ Windows \ system32> docker运行测试 错误:发生了JNI错误,请检查您的安装并重试 线程“主”中的异常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.LauncherHelper.validateMainClass(LauncherHelper.java:544) 在sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.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:
FROM openjdk:8-jre COPY /target/application.jar /tmp/application.jar WORKDIR /tmp ENTRYPOINT ["java", "-cp", "application.jar", "Package.ClassWithMain"]
预先感谢您, 蒙德
答案 0 :(得分:1)
您:复制/target/application.jar /tmp/application.jar 尝试:COPY。 / usr / src / myapp
您:WORKDIR / tmp 试试:WORKDIR / usr / src / myapp
寻找其书面内容,应该有所帮助!
运行javac Main.java CMD [“ java”,“ Main”]
答案 1 :(得分:0)
问题可能是您的jar缺少某些依赖项。 Intellij在构建路径中可能具有必需的依赖关系,这就是您的应用程序从该环境运行的原因。您是在使用Maven还是构建工具来创建jar?