內嵌jetty配置,java.err.nojdk 錯誤解決

背景介紹,系統就是普通的javaweb系統,嵌入jetty進行啓動,方便開發和代碼調試;

maven3集成的tomcat能用,但是有一點不好,就是你改動了相關的文件過後,tomcat就會開始自己加載,多來幾次,就很影響開發效率了;

maven3集成的jetty也能用,有個比較奇怪的點,就是沒辦法設置斷點,很不利於調試;

解決辦法:在maven管理外進行配置jetty解決以上兩個環境存在的問題,正常的打包編譯和部署還是採用maven。

但是內嵌jetty的時候,遇到了問題,公司項目用的是jdk1.7,jetty版本得用8以下的,於是下載的是jetty-distribution-7.6.21,下載鏈接:https://www.eclipse.org/jetty/previousversions.html ;

直接將jetty包放到WEB-INF下的自建文件夾,然後手動將jar進行build path,

附一下項目配置截圖:

 

啓動文件: AjaxJettyLauncher.java

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class AjaxJettyLauncher {
    public static void main(String[] args) throws Exception {
        AjaxJettyLauncher jl = new AjaxJettyLauncher();
        jl.run();
    }
    protected void run() throws Exception {
        Server server = new Server(8181);
        WebAppContext context = new WebAppContext();
          context.setContextPath("/alotcloud");
          context.setDescriptor("webapp/WEB-INF/web.xml");
          context.setResourceBase("src/main/webapp");
          context.setParentLoaderPriority(true);
          server.setHandler(context);
          context.setClassLoader(Thread.currentThread().getContextClassLoader());  //定位class文件位置
          server.start();
          server.join();
    }
}

對AjaxJettyLauncher.java 文件進行右鍵debug as--> java  application 運行即可。

啓動過程中正常,但是訪問報錯,  提示 java.err.nojdk ; 意思是jdk版本不能被識別,其實原因是jetty版本對jdk版本有要求

jetty7版本里面有兩個常用的版本,一個是jetyy7.6XX ,另外一個是jetty7.4XX,很碰巧,我用的是jdk1.7,jetty 版本7.6XX,此處內心有點波動

解決辦法:

1.升級jdk7爲1.8, 目前jdk7或8版本已經算低版本了,但是公司有公司的要求,所以大家各自取捨。

2.jetty降級,將jetty7.6 降級爲 7.4版本的。測試通過。

運氣好,我本地通過嘗試更換jdk7位jdk8過後,能解決問題,大致推測出是jetty版本和jdk版本上的差異問題,然後再尋找相關資料,針對性的去查詢資料省下不少時間。

網上也查詢過大多數的資料,比如說你的eclipse環境不能用jre,得用jdk等等之類的,都試過,對我這種情況沒有效果。

還有讓  在jetty下的start.ini中增加這個配置,org.apache.jasper.compiler.disablejsr199=true   可解決這個問題,但是我是內嵌jetty啓動項目,沒有start.ini 文件吶。不過也感謝所有在網上輸出文章的網友!

 

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