我在 Windows 11 上使用 docker 桌面来管理我的 Java Web 应用程序的容器。 我在本地构建容器映像并且可以毫无问题地运行它们。 当我将它们推送到 AWS 并将它们作为 FARGATE 服务运行时,当我的应用程序尝试发送电子邮件时,我收到以下错误:
线程“Thread-2”中的异常 java.lang.NoClassDefFoundError:jakarta/activation/DataContentHandler 在 java.base/java.lang.ClassLoader.defineClass1(本机方法) 在 java.base/java.lang.ClassLoader.defineClass(来源未知) 在 java.base/java.security.SecureClassLoader.defineClass(来源未知) 在org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2287) 在 org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:797) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1272) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1120) 在 java.base/java.lang.ClassLoader.defineClass1(本机方法)...
我假设我的容器应该以相同的方式运行,无论它们在什么环境中运行。
有人可以向我解释一下为什么我的假设是错误的吗?
我真的不知道要尝试和更改我的容器,因为它适用于我的本地。
你的假设是正确的。如果在本地找到该类,则容器也必须将其放在远程。因此,请仔细检查您是否确实在运行相同的图像。