• 1.6 jetty-server 下开发
    • 1、创建标准的 maven 项目
    • 2、添加 jetty server 与 jfinal 依赖
    • 3、添加 java 文件
    • 4、启动项目
    • 5、开启浏览器看效果
    • 6、常见问题解决:

    1.6 jetty-server 下开发

    1、创建标准的 maven 项目

    与 jfinal undertow 相关小节完全一样

    2、添加 jetty server 与 jfinal 依赖

    1. <dependency>
    2. <groupId>com.jfinal</groupId>
    3. <artifactId>jfinal</artifactId>
    4. <version>4.7</version>
    5. </dependency>
    6.  
    7. <dependency>
    8. <groupId>com.jfinal</groupId>
    9. <artifactId>jetty-server</artifactId>
    10. <version>2019.3</version>
    11. <scope>provided</scope>
    12. </dependency>
    13.  
    14. <!-- 下面的依赖仅在使用 JSP 时才需要 -->
    15. <dependency>
    16. <groupId>org.eclipse.jetty</groupId>
    17. <artifactId>jetty-jsp</artifactId>
    18. <version>9.2.26.v20180806</version>
    19. <scope>provided</scope>
    20. </dependency>

    jetty-server 依赖的 scope 为 provided,仅用于开发阶段,部署时不需要,打包时也会自动跳过。

    这里特别注意一下:如果是使用 IDEA 开发,scope 仍然得设置成为 compile,否则提示缺少 jar 包,在打包的时候记得要改回 provided,避免打进一些不需要的 jar 包

    3、添加 java 文件

    与 jfinal undertow 相关小节几乎一样,仅仅是 main 方法中的内容有所不同,如下:

    1. public static void main(String[] args) {
    2. JFinal.start("src/main/webapp", 80, "/", 5);
    3. }

    4、启动项目

    与 jfinal undertow 相关小节完全一样

    5、开启浏览器看效果

    与 jfinal undertow 相关小节完全一样

    6、常见问题解决:

    1:出现 NoClassDefFoundError 异常

    原因之一是 maven 本地库下载的 jar 文件数据有错误。看一下异常中是哪个类文件抛出的 NoClassDefFoundError,在本地 maven 库中删掉其目录,让 maven 从中心库中重新下载一次即可,例如使用的 jfinal-3.6 版本,就删掉 maven repository 中的 /com/jfinal/jfinal 目录下面的 3.6 子目录。

    原因之二是对同一个 jar 包,引入了多个不同版本,删掉其中多余的即可

    以上问题本质上与 jfinal 无关,纯属 Java 开发时碰到的基础性异常