GVKun编程网logo

java.lang.NoClassDefFoundError:org / apache / spark / Logging

20

对于java.lang.NoClassDefFoundError:org/apache/spark/Logging感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于ApacheTomcat设置ja

对于java.lang.NoClassDefFoundError:org / apache / spark / Logging感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于Apache Tomcat设置java.lang.NoClassDefFoundError:org / springframework / asm / ClassVisitor、ava.lang.NoClassDefFoundError: org/apache/spark/Logging、Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory、java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory的有用信息。

本文目录一览:

java.lang.NoClassDefFoundError:org / apache / spark / Logging

java.lang.NoClassDefFoundError:org / apache / spark / Logging

我总是遇到以下错误。有人可以帮我吗?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/Logging    at java.lang.ClassLoader.defineClass1(Native Method)    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    at com.datastax.spark.connector.japi.DStreamJavaFunctions.<init>(DStreamJavaFunctions.java:24)    at com.datastax.spark.connector.japi.CassandraStreamingJavaUtil.javaFunctions(CassandraStreamingJavaUtil.java:55)    at SparkStream.main(SparkStream.java:51)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:498)    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    ... 20 more

当我编译以下代码时。我已经在网上搜索了,但没有找到解决方案。添加saveToCassandra时出现错误。

import com.datastax.spark.connector.japi.CassandraStreamingJavaUtil;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.streaming.Duration;import org.apache.spark.streaming.api.java.JavaDStream;import org.apache.spark.streaming.api.java.JavaPairInputDStream;import org.apache.spark.streaming.api.java.JavaStreamingContext;import org.apache.spark.streaming.kafka.KafkaUtils;import java.io.Serializable;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.Set;import static com.datastax.spark.connector.japi.CassandraJavaUtil.mapToRow;/** * Created by jonas on 10/10/16. */public class SparkStream implements Serializable{        public static void main(String[] args) throws Exception{        SparkConf conf = new SparkConf(true)                .setAppName("TwitterToCassandra")                .setMaster("local[*]")                .set("spark.cassandra.connection.host", "127.0.0.1")                .set("spark.cassandra.connection.port", "9042");;        JavaSparkContext sc = new JavaSparkContext(conf);        JavaStreamingContext ssc = new JavaStreamingContext(sc, new Duration(5000));        Map<String, String> kafkaParams = new HashMap<>();        kafkaParams.put("bootstrap.servers", "localhost:9092");        Set<String> topics = Collections.singleton("Test");        JavaPairInputDStream<String, String> directKafkaStream = KafkaUtils.createDirectStream(                ssc,                String.class,                String.class,                kafka.serializer.StringDecoder.class,                kafka.serializer.StringDecoder.class,                kafkaParams,                topics        );        JavaDStream<Tweet> createTweet = directKafkaStream.map(s -> createTweet(s._2));        CassandraStreamingJavaUtil.javaFunctions(createTweet)                .writerBuilder("mykeyspace", "rawtweet", mapToRow(Tweet.class))                .saveToCassandra();        ssc.start();        ssc.awaitTermination();    }    public static Tweet createTweet(String rawKafka){        String[] splitted = rawKafka.split("\\|");        Tweet t = new Tweet(splitted[0], splitted[1], splitted[2], splitted[3]);        return t;    }}

我的pom是以下内容。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.company</groupId>    <artifactId>Sentiment</artifactId>    <version>1.0-SNAPSHOT</version>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.8</source>                    <target>1.8</target>                </configuration>            </plugin>        </plugins>    </build>    <repositories>        <repository>            <id>twitter4j.org</id>            <name>twitter4j.org Repository</name>            <url>http://twitter4j.org/maven2</url>            <releases>                <enabled>true</enabled>            </releases>            <snapshots>                <enabled>true</enabled>            </snapshots>        </repository>    </repositories>    <dependencies>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-streaming_2.11</artifactId>            <version>2.0.1</version>        </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-core_2.10</artifactId>            <version>2.0.0</version>        </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-sql_2.10</artifactId>            <version>2.0.0</version>        </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>            <version>2.0.1</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->        <dependency>            <groupId>org.scala-lang</groupId>            <artifactId>scala-library</artifactId>            <version>2.11.8</version>        </dependency>        <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.10 -->        <dependency>            <groupId>com.datastax.spark</groupId>            <artifactId>spark-cassandra-connector_2.10</artifactId>            <version>1.6.2</version>        </dependency>        <dependency>            <groupId>org.apache.kafka</groupId>            <artifactId>kafka_2.10</artifactId>            <version>0.9.0.0</version>        </dependency>        <dependency>            <groupId>org.twitter4j</groupId>            <artifactId>twitter4j-core</artifactId>            <version>[4.0,)</version>        </dependency>        <dependency>            <groupId>org.twitter4j</groupId>            <artifactId>twitter4j-stream</artifactId>            <version>4.0.4</version>        </dependency>        <dependency>            <groupId>org.twitter4j</groupId>            <artifactId>twitter4j-async</artifactId>            <version>4.0.4</version>        </dependency>    </dependencies></project>

答案1

小编典典

org.apache.spark.Logging在Spark版本1.5.2或更低版本中可用。它不在2.0.0中。请更改版本如下

    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-streaming_2.11</artifactId>        <version>1.5.2</version>    </dependency>    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-core_2.10</artifactId>        <version>1.5.2</version>    </dependency>    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-sql_2.10</artifactId>        <version>1.5.2</version>    </dependency>    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>        <version>1.6.2</version>    </dependency>

Apache Tomcat设置java.lang.NoClassDefFoundError:org / springframework / asm / ClassVisitor

Apache Tomcat设置java.lang.NoClassDefFoundError:org / springframework / asm / ClassVisitor

我刚刚通过ubuntu软件包管理器安装了tomcat。我打开日志,看到的第一件事是一个有趣的异常。

java.lang.NoClassDefFoundError:org / springframework / asm / ClassVisitor

我在安装中缺少什么吗?

应该说,我首先重新安装的原因是我第一次使用Tomcat来进行Web服务,但是那没有用。但是现在:为什么我会收到此异常?我出于好意而粘贴了整个日志:

Feb 13,2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Feb 13,2012 10:00:17 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
... 31 more
Feb 13,2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Feb 13,2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Feb 13,2012 10:02:30 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class     org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
... 31 more
Feb 13,2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext

ava.lang.NoClassDefFoundError: org/apache/spark/Logging

ava.lang.NoClassDefFoundError: org/apache/spark/Logging

ava.lang.NoClassDefFoundError: org/apache/spark/Logging
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.apache.spark.streaming.kafka.KafkaUtils$.createStream(KafkaUtils.scala:74)
    at org.apache.spark.streaming.kafka.KafkaUtils$.createStream(KafkaUtils.scala:55)
    at org.apache.spark.streaming.kafka.KafkaUtils$.createStream(KafkaUtils.scala:94)
    at org.apache.spark.streaming.kafka.KafkaUtils.createStream(KafkaUtils.scala)
    at org.apache.spark.examp.JavaKafkaWordCount.main(JavaKafkaWordCount.java:84)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging

Exception in thread

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.http.conn.ssl.DefaultHostnameVerifier.<init>(DefaultHostnameVerifier.java:69)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:901)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
at com.java.test.httpClient.AppAdRequestTest.getMedAppRequest(AppAdRequestTest.java:30)
at com.java.test.httpClient.AppAdRequestTest.main(AppAdRequestTest.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 5 more

java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

(一) 现象与解决方法

前些天在进行storm job的开发时候突然报了一个错误,记录一下

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
  • 1
  • 1

当然我们的第一个反应是log4j这个包缺失(当然也有这种情况,需要首先确认),打开pom文件查看依赖,文件确实存在。

后经网上搜索加边上大牛指点发现:

log4j-over-slf4j.jar 和 slf4j-log4j12.jar 在同一个classpath下就会出现这个错误。

解决方法: 
将slf4j-log4j12.jar从相关的jar中排除

(二) 日志组件tips

那么问题来了,为啥会有这种冲突呢?在这里需要简单的说一下log的故事!

(1)common-logging、log4j、slf4j、logback

common-logging 
common-logging是apache提供的一个通用的日志接口;

在common-logging中,有一个Simple logger的简单实现,但是它功能很弱,所以使用common-logging,通常都是配合着log4j来使用;

common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库,并且尽可能找到一个”最合适”的日志实现类,如果判断有Log4j包,则使用log4j,最悲观的情况下也总能保证提供一个日志实现(SimpleLog)

log4j 
Apache的一个开放源代码项目,实现了输出到控制台、文件、 回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能,且配置比较简单;

slf4j 
slf4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。可以这么说,slf4j等于commons-logging,是各种日志实现的通用入口,会根据classpath中存在下面哪一个Jar来决定具体的日志实现库;

logback 
logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j。

(2)log4j-over-slf4j.jar 和 slf4j-log4j12.jar 在同一个classpath下为何出现错误?

在java领域日志工具中,最早得到广泛使用的是 log4j。那么为啥有common-logging的出现?上面已经介绍了common-logging只提供log的接口,其中具体的实现时动态绑定的,所以common-logging与log4j的结合比较多!但是随之也产生了一些问题,那就是common-logging的动态绑定有时候也会失败(说实在这个我也不懂,希望求解),在这样的背景下slf4j应运而生,slf4j与common-logging一样提供log接口,但是slf4j是通过静态绑定实现。

好的,先在来说slf4j-log4j12.jar是干啥的? 
slf4j提供 log 接口,其具体实现是根据放入程序的绑定器决定

 slf4j-XXX-version.jar
  • 1
  • 1

slf4j-log4j12.jar就是实现通过slf4j调度使用log4j

那么log4j-over-slf4j.jar是干啥的勒?

在这里需要引入桥接器的概念,所谓的桥接器就是一个假的日志实现工具。

XXX-over-slf4j.jar
  • 1
  • 1

log4j-over-slf4j.jar就是桥接器,本来组件是通过log4j输出日志的,通过该桥接器被转到slf4j,slf4j在根据绑器把日志交给具体的日志实现工具。

如果log4j-over-slf4j.jar 和 slf4j-log4j12.jar共存的后果是什么?那就是两个踢球的人在互相传球,就是没人射门,陷入死循环。

这里写图片描述

参考博文: 
[1]http://blog.csdn.net/feng27156/article/details/36885387 
[2]http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html

关于java.lang.NoClassDefFoundError:org / apache / spark / Logging的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Apache Tomcat设置java.lang.NoClassDefFoundError:org / springframework / asm / ClassVisitor、ava.lang.NoClassDefFoundError: org/apache/spark/Logging、Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory、java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory的相关信息,请在本站寻找。

本文标签: