9

我一直想使用 Apache Storm 从 Kafka 流式传输。我对 Python 更熟悉,所以我决定使用 streamparse ( https://github.com/Parsely/streamparse )。字数统计示例是介绍性示例。我一直试图让它在我的本地机器上工作。我安装了以下版本的 JDK、lein 和storm:

Java 1.8.0_73 Java HotSpot(TM) 64 位服务器 VM 上的 Leiningen 2.6.1

在遵循 streamparse 之后,我运行以下步骤:

稀疏快速入门字数
光盘字数
稀疏运行

我收到以下错误:

从中央检索 org/apache/storm/storm-core/0.10.1/storm-core-0.10.1.pom
从中央检索 org/apache/storm/storm/0.10.1/storm-0.10.1.pom
从中央检索 org/apache/storm/storm-core/0.10.1/storm-core-0.10.1.jar
无法将工件 com.parsely:streamparse:pom:0.0.4-SNAPSHOT 从 / 传输到 clojars (https://clojars.org/repo/):sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security .provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
无法将工件 clojure-complete:clojure-complete:pom:0.2.4 从/到 clojars (https://clojars.org/repo/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security .provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
这可能是由于 :dependencies 中的拼写错误或网络问题。
如果您使用代理,请尝试设置“http_proxy”环境变量。

我的 project.clj 文件如下所示:

    (defproject 字数“0.0.1-SNAPSHOT”
      :源路径[“拓扑”]
      :resource-paths ["_resources"]
      :目标路径“_build”
      :min-lein-版本“2.6.1”
      :jvm-opts ["-client"]
      : 依赖 [[org.apache.storm/storm-core "0.10.1"]
                  [com.parsely/streamparse“0.0.4-SNAPSHOT”]
                  ]
      :jar-exclusions [#"log4j\.properties" #"backtype" #"trident" #"META-INF" #"meta-inf" #"\.yaml"]
      :uberjar-exclusions [#"log4j\.properties" #"backtype" #"trident" #"META-INF" #"meta-inf" #"\.yaml"]
  )

因此,我的 lein 和storm core 版本设置正确。我不确定我哪里出错了。有人可以帮帮我吗?

-谢谢

4

2 回答 2

29

这是因为 java 无法识别https://clojars.org/repo的根证书颁发机构 (CA) SSL 证书。

解决方案是将该证书添加到 java cacerts 文件中,以便它被永久接受。

第 1 步:获取https://clojars.org的根证书

  1. 在 chrome 浏览器中打开https://clojars.org 。
  2. 在地址栏旁边找到锁定符号并单击它。
  3. 查看详情
  4. 单击层次结构中最顶部的证书并确认它带有根 CA 短语。
  5. 拖放您在桌面上看到书面证书的图像。

而已!你得到了你的根证书!

第 2 步:将该证书添加到 java cacerts 文件中。

  1. 在 jre bin 文件夹中使用 keytool.exe。
  2. 触发以下命令将您的证书放在 cacerts 文件中

keytool –import –noprompt –trustcacerts –alias ALIASNAME -file /PATH/TO/YOUR/DESKTOP/CertificateName.cer -keystore /PATH/TO/YOUR/JDK/jre/lib/security/cacerts -storepass changeit

这就对了!你的问题解决了。

请注意

  1. 请确认给您此 PKIX 错误(KAFKA 使用的 JRE)的 jre 是您执行第 2 步的地方。如果您尝试解决另一个 jre 问题,那么它就是原样。

  2. 只使用 JDK 中的一个 jre,它会减少出现问题的机会。

于 2016-05-24T10:50:08.937 回答
2

如果您使用的是 debian 或 ubuntu,您可以执行:

$ sudo update-ca-certificates -f
于 2017-05-09T14:47:46.327 回答