由于之前沒接觸過maven,在導入jfinal官網的maven項目後發現并沒有run on server這一項,折騰天了半天總算解決了,下面将解決辦法簡略總結了一下。
1、啟動項目發現沒有run onserver選項
解決:
項目右鍵,屬性,搜尋Project Facets,勾選dynamic web services框。點選Feature configuration....,修改Content directory為src/main/webapp。
現在項目右鍵--Run as ---就可以看到server啟動項了。
那麼現在啟動項目,會不會順利運作呢,答案當然是否定的,看下圖:
報錯了,錯誤資訊如下:
java.lang.ClassNotFoundException: com.jfinal.core.JFinalFilter
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:495)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:477)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4958)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5652)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
很顯然是jfinal jar包沒有加載進來,這是因為項目中沒有引入maven 依賴,解決方法如下:
項目--右鍵--屬性 搜尋deployment assembly,點選add,添加maven依賴。
修改完後重新run on server一下,大功告成!!
另外需注意項目所依賴的jre版本,
Source default output folder:jfinal_demo_for_maven/target/classes.
第一次發文,版式有點亂,望見諒!