Maven web project & TST工具體驗

TST工具體驗Spring+MyBatis整合過程中遇到的問題解決
環境:
Win7 64bit/Spring Tool Suite Version: 3.3.0.RELEASE/JDK1.7/Tomcat 7/


STS對利用maven管理項目來說非常便捷,
創建項目選中Maven Project-->Select An Catalogs(Filter 通過webapp過濾後選擇 GroupID 爲org.apache.maven.archetypes那條)

設置文件編碼
打開STS安裝目錄下STS.ini文件,在文件尾添加-Dfile.encoding=UTF-8

STS3.3默認使用服務VMware vFabric tc Server, 可以添加Tomcat(Preference->Server->Runtime Environments :Add)

問題一:ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
問題二:nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext

問題三:java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0
首先確認是否已經引入了mysql-connector-java包
我出現的問題並不是沒有引入包,而是利用mybatis-generator-core生成dao,mapper時利用的mysql-connector-java包和項目中引入的包版本不一致,
可能兩個版本編譯的jdk版本不同導致的,修改爲統一版本號jar包解決
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>


問題四:運行junit測試報javax/servlet/ServletContext : Unsupported major.minor version 52.0錯誤
①,檢查是否引入servlet-api包,沒有則引入
②,檢查STS項目jdk版本和tomcat jre版本是否一致,不一致改爲相同版本
③,servlet-api包版本是否引入正確
④,其它待補充
問題五:mysql Access denied for user \'root\'@\'localhost\'”
首先確認mysql 用戶名和密碼設置是否正確,如果正確還出現這個問題,我的解決辦法是重設mysql登陸密碼
cmd->mysql -h localhost -u root -p testDb;
//之後需要在dos窗口下輸入密碼
//重設密碼
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('newpass');
問題解決

同樣關於maven的使用,在myEclipse上也嘗試了一次.果然再次遇到不少問題
環境:
Win7 64bit/MyEclipse10/JDK1.7/Tomcat 7/
問題一:Please ensure you are using JDK 1.4 or above and...,
產生原因我這裏是因爲MyEclipse JRE版本和 maven或者引用的jar包版本不一致,我本機的Java環境是1.7,MyEclipse最高默認只能選到1.6
這時需要新增一個1.7版本的.步驟如下:
Window -> preferences -> Java -> installed jres,點擊add,新加一個環境,設爲默認環境,注意location選擇爲你的jdk目錄。
之後,在你的項目上右擊,build path -> configure build path,編輯JRE System Library,選擇剛纔新建的默認環境
(有時java.lang.UnsupportedClassVersionError這個錯誤大概也是JDK版本不同造成的)
問題二:BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
產生原因大致是因爲MyEclipse默認Default output folder是在project.../WEB-INFO/...,而maven項目的默認output folder是在target/classes下面.
我的解決辦法:項目右鍵->properties->Java Build Path 修改項目的默認輸出目錄 爲target/classes
問題三:maven pom中引入jstl, standard 

http://java.sun.com/jstl/sql is already defined 等各種配置衝突,下面提供一種POM配置
<dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
            </exclusions>
        </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>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp.jstl</groupId>
                    <artifactId>jstl-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

解決:web.xml中
<web-app version="3.0" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true">
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章