尝试将Java版本从Java 8更新到Java 11,以编译和运行StromCrawler。
我的问题-在Java11上支持Storm吗?
当我们在POM中更新java版本并构建项目时,我成功地构建了该项目,但是当我试图运行该项目时,我在运行InjectorTopology时得到了以下错误-
560 [main] INFO c.a.h.c.InjectorTopology - ####### The Injector Topology Started #######
563 [main] INFO c.a.h.c.u.PropertyFileReader - Enter Load Properties File
564 [main] INFO c.a.h.c.u.PropertyFileReader - Exit Load Properties File
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.base/java.lang.J9VMInternals.ensureError(J9VMInternals.java:186)
at java.base/java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:175)
at clojure.lang.Namespace.<init>(Namespace.java:34)
at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
at clojure.lang.Var.internPrivate(Var.java:151)
at org.apache.storm.LocalCluster.<clinit>(Unknown Source)
at com.digitalpebble.stormcrawler.ConfigurableTopology.submit(ConfigurableTopology.java:75)
at com.vinn.hel.crawler.InjectorTopology.run(InjectorTopology.java:57)
at com.digitalpebble.stormcrawler.ConfigurableTopology.start(ConfigurableTopology.java:50)
at com.vinn.hel.crawler.InjectorTopology.main(InjectorTopology.java:40)
Caused by: java.lang.IllegalArgumentException: Must hint overloaded method: toArray, compiling:(clojure/gvec.clj:131:1)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6730)
at clojure.lang.Compiler.analyze(Compiler.java:6524)
at clojure.lang.Compiler.analyze(Compiler.java:6485)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5861)
at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6179)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6723)
at clojure.lang.Compiler.analyze(Compiler.java:6524)
at clojure.lang.Compiler.analyze(Compiler.java:6485)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5861)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5296)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3925)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6721)
at clojure.lang.Compiler.analyze(Compiler.java:6524)
at clojure.lang.Compiler.eval(Compiler.java:6779)
at clojure.lang.Compiler.load(Compiler.java:7227)
at clojure.lang.RT.loadResourceScript(RT.java:371)
at clojure.lang.RT.loadResourceScript(RT.java:362)
at clojure.lang.RT.load(RT.java:446)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__1621.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$eval2892.invoke(core.clj:6497)
at clojure.lang.Compiler.eval(Compiler.java:6782)
at clojure.lang.Compiler.load(Compiler.java:7227)
at clojure.lang.RT.loadResourceScript(RT.java:371)
at clojure.lang.RT.loadResourceScript(RT.java:362)
at clojure.lang.RT.load(RT.java:446)
at clojure.lang.RT.load(RT.java:412)
at clojure.lang.RT.doInit(RT.java:454)
at clojure.lang.RT.<clinit>(RT.java:330)
... 8 more
Caused by: java.lang.IllegalArgumentException: Must hint overloaded method: toArray
at clojure.lang.Compiler$NewInstanceMethod.parse(Compiler.java:8050)
at clojure.lang.Compiler$NewInstanceExpr.build(Compiler.java:7642)
at clojure.lang.Compiler$NewInstanceExpr$DeftypeParser.parse(Compiler.java:7523)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6723)
... 38 more```发布于 2020-11-19 13:47:51
添加到Joachim的注释中,似乎需要Clojure 1.8才能运行Java 11。Storm 1.2.3附带了Clojure 1.7。
您可以覆盖StormCrawler项目的POM中的依赖项,但这只能在本地模式下工作。在部署模式下,还需要更改安装Storm的依赖项。
使用StormCrawler 2.x和最新的Apache可能更容易一些,因为它根本不依赖于Clojure,也可以简单地使用Java8运行它。
https://stackoverflow.com/questions/64912045
复制相似问题