[Spark]Spark Java开发时的报错解决
博客专区 > lambcc 的博客 > 博客详情
[Spark]Spark Java开发时的报错解决
lambcc 发表于2年前
[Spark]Spark Java开发时的报错解决
  • 发表于 2年前
  • 阅读 129
  • 收藏 0
  • 点赞 2
  • 评论 1

华为云·免费上云实践>>>   

摘要: 启动Spark应用时报错:Caused by: java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package 的解决

在Eclipse用Java开发Spark应用时,写好程序想调试Run起来的时候发现意外报错:

Exception:

Caused by: java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(ClassLoader.java:952)
	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:794)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:136)
	at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:129)
	at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:98)
	at org.apache.spark.ui.JettyUtils$.createServletHandler(JettyUtils.scala:96)
	at org.apache.spark.ui.JettyUtils$.createServletHandler(JettyUtils.scala:87)
	at org.apache.spark.ui.WebUI.attachPage(WebUI.scala:67)
	at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:60)
	at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:60)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.ui.WebUI.attachTab(WebUI.scala:60)
	at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:49)
	at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:60)
	at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:150)
	at org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:105)
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:237)
	at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
	at org.apache.hadoop.hive.ql.exec.spark.LocalHiveSparkClient.<init>(LocalHiveSparkClient.java:107)
	at org.apache.hadoop.hive.ql.exec.spark.LocalHiveSparkClient.getInstance(LocalHiveSparkClient.java:69)
	at org.apache.hadoop.hive.ql.exec.spark.HiveSparkClientFactory.createHiveSparkClient(HiveSparkClientFactory.java:52)
	at org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.open(SparkSessionImpl.java:53)
	... 3 more


把依赖中的servlet-api 2.5 jar  remove from build path即可!(事实上在摸索的时候我还把javax.servlet 3.0.0 jar给删了,希望对后面的学习没有影响吧QWQ)


https://issues.apache.org/jira/browse/HIVE-8905

上面是查解决方案时发现的解决办法,有提到一些Spark在调用其他依赖时的关系,可以作为参考:

Hive depends on servlet-api 2.5, spark-core depends on org.eclipse.jetty.orbit javax.servlet 3.0.0. servlet-api 2.5 jar is not signed, while javax.servlet 3.0.0 jar is signed, Hive load other javax.servlet.* classes from servlet-api 2.5, then load javax.servlet.FilterRegistration from javax.servlet 3.0.0, so classloader throw the SecurityException.

by Chengxiang Li

标签: Spark Java Exception
共有 人打赏支持
粉丝 2
博文 2
码字总数 612
评论 (1)
今天来找bug
解决了问题13
×
lambcc
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: