SpringSide是基于SSH架構(gòu)適用于企業(yè)級(jí)開(kāi)發(fā)的啟動(dòng)框架。作為業(yè)務(wù)不是特別定制化的應(yīng)用,它算是一個(gè)不錯(cuò)的起點(diǎn)。
版本3.3.4中,quick-start負(fù)責(zé)安裝maven repository、編譯三個(gè)示例項(xiàng)目,啟動(dòng)數(shù)據(jù)庫(kù),啟動(dòng)項(xiàng)目等等。而generate-project負(fù)責(zé)生成eclipse可開(kāi)發(fā)的代碼模板。
但如果機(jī)器上已經(jīng)裝有Maven版本,則quick-start的Step2編譯時(shí)會(huì)報(bào)錯(cuò):
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/c
lassworlds/launcher/Launcher
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.lau
ncher.Launcher
??????? at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
??????? at java.security.AccessController.doPrivileged(Native Method)
??????? at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
??????? at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
??????? at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
??????? at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher
檢查bat代碼后發(fā)現(xiàn)問(wèn)題出現(xiàn)在
call %MVN% %OFF_LINE% clean install -Dmaven . test.skip=true這一句話。
前面MVN設(shè)置為SpringSide自帶的2.2.1版,但bin\mvn.bat中會(huì)使用系統(tǒng)的M2_HOME,而如果系統(tǒng)中安裝了其他版本的MVN,則M2_HOME會(huì)被指到其他位置,從而導(dǎo)致編譯出錯(cuò)。
一個(gè)解決辦法是在該步之前覆蓋系統(tǒng)中的M2_HOME,在bat中MVN的設(shè)置后面添加
set ANT_HOME=%cd%\tools\maven\apache-ant-1.8.1
set M2_HOME=%cd%\tools\maven\apache-maven-2.2.1
再次執(zhí)行,成功運(yùn)行。