You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

IntelliJ中Java EE Maven项目依赖无法解析致Tomcat报500错误

问题分析与解决方案

先看你碰到的这个500错误:

An error occurred at line: [18] in the jsp file: [/index.jsp] Jsoup cannot be resolved
15:
16:

Wellcome

17: <%
18: Jsoup.connect("http://google.com");
19: %>
20:
21:

这个问题的核心原因其实很简单——你把WEB-INF目录放错位置了,这直接导致Maven没有把你添加的依赖(比如Jsoup、icu4j)放到Tomcat能加载的地方,所以JSP运行时找不到Jsoup的类,就报了“无法解析”的错误。

为什么位置错了会出问题?

Maven管理的Web项目有一套标准目录结构,这是业界约定俗成的:

  • src/main/webapp:这是Web应用的根目录,所有前端页面、静态资源,还有WEB-INF都必须放在这里
  • src/main/resources:这个目录是用来放项目配置文件的(比如application.properties、MyBatis映射文件这类),不是Web应用的部署目录

你把WEB-INF移到了src/main/resources下面,Maven在构建项目的时候,不会自动把pom.xml里声明的依赖Jar包复制到这个错误位置的WEB-INF/lib里。而Tomcat只会从Web应用根目录下的WEB-INF/lib文件夹加载依赖Jar包,所以JSP里调用Jsoup的时候,自然就找不到对应的类了。

快速修复步骤

  1. 把WEB-INF移回正确位置

    • 先在项目根目录下创建src/main/webapp目录(如果还没有的话)
    • src/main/resources下面的整个WEB-INF目录,完整移动到src/main/webapp目录里
  2. 检查IntelliJ的项目配置

    • 打开IntelliJ的File > Project Structure(快捷键是Ctrl+Alt+Shift+S)
    • 选择Modules,找到你的Web模块,切换到Web标签页:
      • 确保Deployment Descriptors里的路径指向src/main/webapp/WEB-INF/web.xml
      • 同时确认Web Resource Directory设置的是src/main/webapp
  3. 重新构建项目

    • 打开IntelliJ右侧的Maven面板,先双击执行clean命令,清理之前的构建产物
    • 再双击执行package命令,重新构建项目,这时候你可以去target/[你的项目名称]/WEB-INF/lib目录下看看,应该能找到Jsoup和icu4j的Jar包了
  4. 重启Tomcat测试

    • 先停止当前运行的Tomcat实例,然后重新部署项目,再启动Tomcat
    • 访问你的index.jsp页面,这时候Jsoup的调用应该就能正常工作了

小建议

另外,尽量别在JSP的脚本块(<% %>)里直接写业务代码,建议把Jsoup的调用逻辑放到Java类里(比如Servlet或者Service类),这样代码更整洁,也方便后续维护和调试,这也是Web开发的最佳实践之一。

内容的提问来源于stack exchange,提问作者sadeghpro

火山引擎 最新活动