相信不少人都知道maven,在工做开发中可能会常常碰到各种maven编译的问题, 下面我会逐步的去总结一些maven在平常工做中遇到的一些问题及解决的方案java
开发过程当中若是有用到json-lib,可能会在编译的时候出现如下问题:linux
[ERROR]Failure to find net.sf.json-lib:json-lib:jar:2.4 in http://repo.maven.apache.org/maven2 was cached in the local repository resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
解决方案须要在pom.xml添加如下内容:web
<!--json-lib--> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
2. 开发过程当中有的时候编译项目可能会遇到如下问题:spring
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1116) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350)
解决方案是须要在pom.xml添加如下内容:apache
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>
3. maven项目编译过程可能会常常如下问题:json
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project dubbo-common: There are test failures.
解决方案是编译命令行加上 -Dmaven.test.skipapi
mvn clean install -Dmaven.test.skip 或者 mvn clean install -DskipTests
4. 不少时候在maven项目中建立module项目会发现很慢 须要加一个参数archetypeCatalog=internal
,不加这个参数,在maven生成骨架的时候将会很是慢,有时候会直接卡住tomcat
5. 有时候启动tomcat项目在catalina.out中会出现如下错误bash
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
对于这种错误能够从下面几个方面解决:app
首先问题的根源在于jdk的版本可能不对致使,因此这时候你须要经过java -version或者 javac -version命令来查看jdk版本是不是一致的
其次经过下面几步来解决这个问题
1. 编辑.bash_profile文件,加入jdk的环境变量,注意顺序
export JAVA_HOME=/usr/local/jdk1.8.0_72 export PATH=$JAVA_HOME/bin:$PATH
2.编辑.bashrc 也是加入jdk环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_72 export PATH=$JAVA_HOME/bin:$PATH
3.找到tomcat/bin目录中的catalina.sh脚本,在首句加入jdk的环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_72 export JRE_HOME=/usr/local/jdk1.8.0_72/jre CATALINA_OPTS="$CATALINA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=debugPort,server=y,suspend=n" # OS specific support. $var _must_ be set to either true or false. cygwin=false darwin=false os400=false case "`uname`" in CYGWIN*) cygwin=true;; Darwin*) darwin=true;; OS400*) os400=true;; esac
按照上面几步作,基本这个问题应该能够解决了,另外上面的操做是对linux上面的