Myeclipse6.5遷移到IDEA

背景

myeclipse開發的javaweb項目用svn管理。現要轉用idea開發。因爲發現idea實在是太好用了。myeclipse6.5是個純淨版,用了兩年,對於新手來說用myeclipse6.5有利於懂得原理性的操作。

遷移步驟

導入IDEA

Import Project選擇要導入的項目 -> Import project from external model 選擇 Eclipse -> Create module files near .classpath files(此項生成.impl文件的位置) -> 一直下一步直到結束

沒有Import Project可以通過以下方法添加

 

配置環境

Project配置

點擊Project Structure,配置項目環境

Models配置

 

 

添加Lib包

Libraries配置所需要的jar包,如果是maven會很簡單

然後到Modules裏面設置dependencies添加此lib裏面設置,因爲lib下面會自動添加到dependencies。

添加servlet-api.jar、jsp-api.jar、jstl-1.2.jar三個包。其中前兩個可以用Tomcat模塊代替,第三個要自己下載導入。

轉爲Web項目

Facets

轉換爲Web項目

SourceRoots要勾選爲src,即classpath路徑。如果是maven一定要把java和resource都勾上

生成最終項目部署文件

生成部署文件或者war包,依賴包變更時這裏也要跟着動。

配置SVN

Setting -> Version Control -> Subversion 

配置Use command line client爲svn.exe

如果發現自己安裝的svn沒有svn.exe文件要找到安裝包重新modify,裝上command命令行工具後即可. 

Myeclipse和IDEA區別

Myeclipse6.5開發WEB

用Build Path引入JDK、JavaEE(只用到javaee.jar,jstl1.2.jar)、lib包。

JavaEE5中的jar包如下:

javaee.jar:javaweb開發的基礎,九大內置對象和四大作用域就在這裏。但是這個jar包最終不會被髮布到lib下面,由tomcat中lib下的servlet-api.jar支持所以不會報錯。

jsf-api.jar:JavaServer Faces(JSF)是一個爲網絡應用程序構建基於組件的用戶界面的Java規範,實際上我並沒有使用到。

jsf-impl.jar:JSF的具體實現,爲了展現UI組件和管理它們的狀態;操作事件、服務器端的確認和數據變換;定義頁面導航;支持國際化和可訪問性;提供對所有特性的可擴展性的API爲了在JSP中表示UI組件和拍發組件給服務器端對象的兩個JSP自定義tag庫。

jstl-1.2.jar:JSP標準標籤庫JSP Standard Tag Library)是Java EE網絡應用程序開發平臺的組成部分。它在JSP規範的基礎上,擴充了一個JSP的標籤庫來完成一些通用任務,比如XML數據處理、條件執行、數據庫訪問、循環和國際化。JSTL提供了一個有效的途徑,以在JSP頁面中嵌入邏輯,而不是直接嵌入Java代碼。使用標準標籤集,減少了Java代碼導致的不連續,從而提高代碼的可維護性,並達到應用軟件代碼開發與用戶界面間的關注點分離。

IDEA開發WEB

要引入jdk,lib包,還有支持web開發的jar(idea不像Myeclipse那麼方便直接引入JavaEE5即可要分別導入servlet-api.jar,jsp-api.jar,jstl.jar代替,servlet-api.jar + jsp-api.jar = javaee.jar)

先在Libraries中添加jstl-1.2.jar,然後在Modules中添加。

 在Modules -> 中添加Tomcat Library(包含servlet-api.jar,jsp-api.jar,這個要設爲Provided,因爲只參與開發時使用,運行時Tomcat中存在),然後在添加Libraries中引入的jstl-1.2.jar(這個設爲Runtime,在運行時用)。

然後在Artifacts中確認編譯後的lib.jar包存在jstl.jar

如果是Maven,很方便。servlet-api.jar + jsp.jar就是上面tomcat提供的,所以只用provided。jstl手動導包,用runtime。

<dependencies>
        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--jsp-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>
        <!--jstl-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

遷移後遇到的問題

org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:293)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:80)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:122)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:489)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1445)
    org.apache.jasper.compiler.Parser.parse(Parser.java:144)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:350)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:595)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.gmtx.system.filter.CheckLoginFilter.doFilter(CheckLoginFilter.java:74)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

引入到IDEA後發現帶有<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>的jsp界面都不能訪問了,回去用Myeclipse發現也不行。

目測是缺少jstl.jar包,但是看了下並不缺。嘗試了網上的各種方法都不行,最後發現換了個tomcat就好了。不知道爲啥,tomcat突然就壞了,換的這個是同一個壓縮包解壓的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章