Maven使用常見問題總結及解決方案

Maven使用常見問題總結及解決方案

相信不少人都知道maven,在工做開發中可能會常常碰到各種maven編譯的問題, 下面我會逐步的去總結一些maven在平常工做中遇到的一些問題及解決的方案java

  1. 開發過程當中若是有用到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上面的

相關文章
相關標籤/搜索