今天新引入一个包后,运行报如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Product$class

at akka.util.Timeout.<init>(Timeout.scala:13)

at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:328)

at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:683)

at akka.actor.ActorSystem$.apply(ActorSystem.scala:245)

at akka.actor.ActorSystem$.apply(ActorSystem.scala:288)

at akka.actor.ActorSystem$.apply(ActorSystem.scala:263)

at akka.actor.ActorSystem$.create(ActorSystem.scala:191)

at org.apache.flink.runtime.akka.AkkaUtils$.createActorSystem(AkkaUtils.scala:106)

at org.apache.flink.runtime.akka.AkkaUtils.createActorSystem(AkkaUtils.scala)

at org.apache.flink.runtime.minicluster.MiniCluster.createRpcService(MiniCluster.java:747)

at org.apache.flink.runtime.minicluster.MiniCluster.start(MiniCluster.java:249)

at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:118)

at com.kuainiu.eventtrigger.CanalConsumer.main(CanalConsumer.java:39)

Caused by: java.lang.ClassNotFoundException: scala.Product$class

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 13 more

  NoClassDefFoundError一看明显是包依赖冲突,那么就只有查看包依赖关系,进入项目的pom文件目录,执行mvn dependency:tree,如下截图展示出依赖关系。

 
  如果图中不好查看,可以通过命令mvn dependency:tree -Doutput=a.txt导出到a文件,在文件里面查看。
  针对maven的各种配置说明:
<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/maven-v4_0_0.xsd">
<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->
<groupId>gstd</groupId>
<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>wocpWeb</artifactId>
<!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->
<packaging>war</packaging>
<!-- 本项目目前所处的版本号 -->
<version>0.0.1-SNAPSHOT</version>
<!--项目的名称, Maven产生的文档用 -->
<name>gstd-wocpWeb Maven Webapp</name>
<!--项目主页的URL, Maven产生的文档用 -->
<url>http://maven.apache.org</url>
<!--项目开发者属性-->
<properties>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.0.5.RELEASE</org.springframework.version>
<org.eclipse.jetty.version>8.0.3.v20111011</org.eclipse.jetty.version>
<!-- Hibernate版本 -->
<org.hibernate.version>3.6.8.Final</org.hibernate.version>
</properties>
<!--发现依赖和扩展的远程仓库列表。-->
<!--发现依赖和扩展的远程仓库列表。-->
<repositories>
<!--包含需要连接到远程仓库的信息-->
<repository>
<!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库-->
<id>public</id>
<!--远程仓库名称-->
<name>Public Repositories</name>
<!--远程仓库URL,按protocol://hostname/path形式-->
<url>http://192.168.101.23:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
<!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。-->
<dependencies>
<dependency>
<!--依赖的group ID-->
<groupId>javax.mail</groupId>
<!--依赖的artifact ID-->
<artifactId>mail</artifactId>
<!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。-->
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<!--排除以下依赖的包-->
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--构建项目需要的信息-->
<build>
<!--产生的构件的文件名-->
<finalName>gstd-wocpWeb</finalName>
<!-- 通过过滤功能解析资源文件中的maven属性 -->
<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resources>
<!--这个元素描述了项目相关或测试相关的所有资源路径-->
<resource>
<!--描述存放资源的目录,该路径相对POM路径-->
<directory>src/main/resources</directory>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
<filtering>true</filtering>
<!--包含哪些文件-->
<includes>
<include>application.yml</include>
<include>*.properties</include>
<include>*.xml</include>
<include>*.yml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
</resource>
</resources>
<!-- 编译Java代码插件 -->
<!--使用的插件列表 。-->
<plugins>
<!--plugin元素包含描述插件所需要的信息。-->
<plugin>
<!--插件在仓库里的group ID-->
<groupId>org.apache.maven.plugins</groupId>
<!--插件在仓库里的artifact ID-->
<artifactId>maven-compiler-plugin</artifactId>
<!--扩展配置项-->
<configuration>
<encoding>utf-8</encoding>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- skip test -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${org.eclipse.jetty.version}</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<useFileMappedBuffer>false</useFileMappedBuffer>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>${wocp.server.start.startport}</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<stopKey>${wocp.server.start.stopkey}</stopKey>
<stopPort>${wocp.server.start.stopport}</stopPort>
<systemProperties>
<systemProperty>
<name>org.mortbay.jetty.Request.maxFormContentSize</name>
<value>1000000</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
 
<!-- 利用assembly插件打包 -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->
<executions>
<!--execution元素包含了插件执行需要的信息-->
<execution>
<id>make-assembly</id>
<phase>package</phase>
<!--配置的执行目标-->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</configuration>
</plugin>
 
</plugins>
</build>
 
<!-- 针对不同环境的profile -->
<!--在列的项目构建profile,如果被激活,会修改构建处理-->
<profiles>
<!-- 开发配置 -->
<!--根据环境参数或命令行参数激活某个构建处理-->
<profile>
<id>dev</id>
<properties>
<wocp.server.start.startport>9200</wocp.server.start.startport>
<wocp.server.start.stopport>9201</wocp.server.start.stopport>
<wocp.server.start.stopkey>stop</wocp.server.start.stopkey>
<bill.db.driver>oracle.jdbc.OracleDriver</bill.db.driver>
<bill.db.url>jdbc:oracle:thin:@192.168.101.23:1521:nfc</bill.db.url>
<bill.db.username>bill_center</bill.db.username>
<bill.db.passwd>bill</bill.db.passwd>
<shine.db.driver>oracle.jdbc.OracleDriver</shine.db.driver>
<shine.db.url>jdbc:oracle:thin:@192.168.101.23:1521:nfc</shine.db.url>
<shine.db.username>shine_center</shine.db.username>
<shine.db.passwd>shine</shine.db.passwd>
</properties>
</profile>
<!-- 连接测试库的配置 -->
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<wocp.server.start.startport>5180</wocp.server.start.startport>
<wocp.server.start.stopport>5181</wocp.server.start.stopport>
<wocp.server.start.stopkey>stop</wocp.server.start.stopkey>
<bill.db.driver>oracle.jdbc.OracleDriver</bill.db.driver>
<bill.db.url>jdbc:oracle:thin:@192.168.1.66:1521:orcl</bill.db.url>
<bill.db.username>dev_bill_smc</bill.db.username>
<bill.db.passwd>abc</bill.db.passwd>
<shine.db.driver>oracle.jdbc.OracleDriver</shine.db.driver>
<shine.db.url>jdbc:oracle:thin:@192.168.1.66:1521:orcl</shine.db.url>
<shine.db.username>dev_shine_smc</shine.db.username>
<shine.db.passwd>abc</shine.db.passwd>
</properties>
</profile>
<!-- 生产配置 -->
<profile>
<id>product</id>
<properties>
</properties>
</profile>
</profiles>
</project>
 

  关于包中的<scope>:
1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

 

maven包依赖问题排除的更多相关文章

  1. web项目中遇到的Maven包依赖冲突问题解决

      在搭建web项目时,出现一个比较诡异的问题,任何JSP页面突然都不能够正常地显示,系统爆出HTTP:500(服务器内部错误)的页面   HTTP Status 500 - java.lang.No ...

  2. 【maven】排除maven中jar包依赖的解决过程 例子:spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings.

    一直对于maven中解决jar包依赖问题的解决方法纠结不清: 下面这个例子可以说明一个很简单的解决方法: 项目启动报错: Connected to the target VM, address: '1 ...

  3. Java-idea-常用技巧-转maven,解决包依赖冲突

    1.Intellij IDEA如何将普通工程转换成maven工程 项目上右键 Add Framework Support,选择maven 2.Intellij IDEA 自动生成 serialVers ...

  4. maven项目依赖包问题

    问题 maven传递依赖 解决方案   前段时间,开发中遇到一个关于maven依赖包的问题:由于业务需要,支付网关对账代码中的slf4j-api包需要更新,原包为1.5.8版本,需要更新到1.6.4版 ...

  5. Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析

    现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <depende ...

  6. 如何查看Maven项目中的jar包依赖树情况

    对于开发人员,我想大家对于Maven应该不会陌生吧,如何在一个Maven项目中对这个项目中所引用的第三方jar包有个直观的了解呢? 其实实现很简单,只需要借助于Maven的一条命令,如下所示: mvn ...

  7. Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误

    新版API上线后,发现LOG文件没有正常输出.查看Tomcat的Log文件发现如下的错误信息 May , :: AM com.sun.xml.ws.server.sei.EndpointMethodH ...

  8. maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)

    我们知道,maven的依赖关系是有传递性的.如:A-->B,B-->C.但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖.在maven的依赖管理中,有两种方式可以对依赖 ...

  9. 在maven项目中解决第三方jar包依赖的问题

    在maven项目中,对于那些在maven仓库中不存在的第三方jar,依赖解决通常有如下解决方法: 方法1:直接将jar包拷贝到项目指定目录下,然后在pom文件中指定依赖类型为system,如: < ...

随机推荐

  1. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...

  2. 如何实现1080P延迟低于500ms的实时超清直播传输技术

    再来当一次技术搬运工,内容来自高可用框架,学霸君工程师袁荣喜的如何实现1080P延迟低于500ms的实时超清直播传输技术. 导语:视频直播是很多技术团队及架构师关注的问题,在实时性方面,大部分直播是准 ...

  3. libvirt, libvirt-python, libvirtd 关系浅析

    libvirt 官方解释:  http://libvirt.org/ 见分隔线以下. 我的理解:libvirt 作为一个中间层,封装了对下层虚拟化 hypervisor 的操作方法.也就是说,无论你是 ...

  4. oracle--视图(2)---

    Oracle---视图 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同 ...

  5. html锚链接

    锚点(anchor):其实就是超链接的一种,一种特殊的超链接 普通的超链接,<a href="路径"></a> 是跳转到不同的页面 而锚点,<a hr ...

  6. inner join ,left join ,right join区别

    inner join ,left join ,right join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中 ...

  7. ansible案例-安装nginx

    一.创建目录: mkidr -p playbook/{files,templates}   二.自定义index.html文件 $ vim playbook/templates/index.html. ...

  8. require用法及源码解析

    一.require()的基本用法 require语句内部逻辑: 当 Node 遇到 require(X) 时,按下面的顺序处理. (1)如果 X 是内置模块(比如 require('http'))  ...

  9. [51nod1043]幸运号码

    题意:1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码. 例如:99.1230.123312是幸运号码. 给出一个N,求长度为2N的幸运号码的数量.由于数量很大,输出数 ...

  10. Servlet编程实例 续1

    -----------------siwuxie095                                 在 LoginServlet 中,右键->Open Type Hierar ...