当前位置: 首页 > 知识库问答 >
问题:

带有ZK OKHttp3的Docker镜像抛出错误

乐欣可
2023-03-14

我对Docker和ZK映像有一个非常大的问题。这不会在我的机器上本地发生,但当我在docker上运行时,它会抛给我这个错误:这里有错误

Docker文件:

FROM java:8-jre
ADD target/my_file.jar my_file.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","my_file.jar"]

我通过打字来建造

>

2.docker构建-tmy_image。

3.sudo docker run-p 8080:8080资产

然后它向我抛出了照片中的错误。

请帮帮我,因为我什么都找不到。

Error:
java.lang.NoClassDefFoundError: Could not initialize class sun.net.NetProperties
        at sun.net.spi.DefaultProxySelector$1.run(DefaultProxySelector.java:94) ~[na:1.8.0_111]
        at sun.net.spi.DefaultProxySelector$1.run(DefaultProxySelector.java:92) ~[na:1.8.0_111]
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_111]
        at sun.net.spi.DefaultProxySelector.<clinit>(DefaultProxySelector.java:91) ~[na:1.8.0_111]
        at java.lang.Class.forName0(Native Method) ~[na:1.8.0_111]
        at java.lang.Class.forName(Class.java:264) ~[na:1.8.0_111]
        at java.net.ProxySelector.<clinit>(ProxySelector.java:72) ~[na:1.8.0_111]
        at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:478) ~[okhttp-3.9.1.jar!/:na]
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:226) ~[okhttp-3.9.1.jar!/:na]
        at zk.springboot.API.ApiService.<init>(ApiService.java:35) ~[classes!/:0.1.0]
        at zk.springboot.MVCModel.NewAssetModel.<init>(NewAssetModel.java:55) ~[classes!/:0.1.0]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_111]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_111]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_111]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_111]
        at java.lang.Class.newInstance(Class.java:442) ~[na:1.8.0_111]
        at org.zkoss.zk.ui.impl.AbstractUiFactory.newComposer(AbstractUiFactory.java:172) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.AbstractUiFactory.newComposer(AbstractUiFactory.java:184) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.Utils.newComposer(Utils.java:91) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.metainfo.ComponentInfo.toComposer(ComponentInfo.java:360) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.metainfo.ComponentInfo.toComposers(ComponentInfo.java:330) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.metainfo.ComponentInfo.resolveComposer(ComponentInfo.java:318) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:896) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:889) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:776) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:836) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:794) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:740) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:461) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:369) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.http.ZumlExtendlet.process(ZumlExtendlet.java:137) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.ui.http.ZumlExtendlet.service(ZumlExtendlet.java:108) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.web.util.resource.ClassWebResource.web0(ClassWebResource.java:605) ~[zweb-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.web.util.resource.ClassWebResource.web(ClassWebResource.java:592) ~[zweb-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.web.util.resource.ClassWebResource.service(ClassWebResource.java:272) ~[zweb-8.5.0-Eval.jar!/:8.5.0]
        at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:424) ~[zk-8.5.0-Eval.jar!/:8.5.0]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) [spring-webmvc-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]

共有1个答案

窦哲彦
2023-03-14

我也有同样的问题。有趣的是,当使用在Docker中运行的ZK时,但使用Apache Httpclient(版本4.5.6)。不过,这可能只是巧合。我认为运行应用程序的特定版本的JRE(在Docker容器中)没有sun.net。由于某种原因,NetProperties。

我遇到了这个问题(对HTTP调用抛出相同的异常)

来自openjdk:8u162-jre

我换成了这个

来自采用OpenJDK/openjdk8:jdk8u181-b13-alpine-slim

它起作用了。我在Docker上找不到jdk8u181-b13-jre,如果这是JRE/JDK问题还是只是JRE的版本,现在会很有趣。

 类似资料:
  • 问题内容: 我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像: 现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。 我不知道如何做到这一点。任何帮助表示赞赏。 问题答案: 您不能仅仅强制所有 docker push 命令推送到您的私有注册表。原因之一是您可以

  • 拉取官方 Docker 镜像 docker pull apache/shardingsphere-proxy 手动构建 Docker 镜像(可选) git clone https://github.com/apache/shardingsphere mvn clean install cd shardingsphere-distribution/shardingsphere-proxy-dist

  • 以下步骤指导您构建自己的Envoy二进制文件,并将其放入干净的Ubuntu容器中。 第1步:构建Envoy 使用envoyproxy/envoy-build编译Envoy。该镜像具有构建Envoy所需的全部软件。在您的Envoy目录中执行如下命令: $ pwd src/envoy $ ./ci/run_envoy_docker.sh './ci/do_ci.sh bazel.release' 执

  • 官方最佳实践文档 Best practices for writing Dockerfiles 明确指定镜像版本 构建镜像时,建议明确指定包含版本或者其他辅助信息的tag。 如果不指定镜像tag,默认会使用latest。这种方式不利于版本管理,对应用启动速度也有一定影响(每次启动应用实例时,都需要去镜像仓库检查镜像是否更新) 减小镜像大小 使用alpine版本的基础镜像 alpine是一个高度精简

  • 「Allen 谈 Docker 系列」 DaoCloud 正在启动 Docker 技术系列文章,每周都会为大家推送一期真材实料的精选 Docker 文章。主讲人为 DaoCloud 核心开发团队成员 Allen(孙宏亮),他是 InfoQ 「Docker 源码分析」专栏作者,已出版《Docker 源码分析》一书。Allen 接触 Docker 近两年,爱钻研系统实现原理,及 Linux 操作系统。

  • 主要内容:列出镜像列表,获取一个新的镜像,查找镜像,拖取镜像,删除镜像,创建镜像当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 下面我们来学习: 1、管理和使用本地 Docker 主机镜像 2、创建镜像 列出镜像列表 我们可以使用 docker images 来列出本地主机上的镜像。 各个选项说明: REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID