我的项目可以在IntelliJ中很好地编译,这是一个用scala编写的简单spring-mvc。

使用tomcat运行它时出现此错误:

java.lang.NoClassDefFoundError: org/example/houses/SomeClassNameHere


上面的不是我的图书馆的确切名称。

我的控制器看起来像:

package com.example.scalacms.web.controllers

import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.{ResponseBody, RequestMapping}
import org.example.house

@Controller
class HomeController {
  var houses: Houses = _


  @RequestMapping(Array("/"))
  @ResponseBody
  def index: String = {
    "hello, world!"
  }

}


我很困惑,因为它可以在IntelliJ中很好地编译,可以在智能感知等方面学习我的所有课程。

可能是tomcat在我的类路径中没有库吗?我正在使用爆炸的工件。

我在输出窗口的任何位置都看不到类路径,因此无法确认。

更新资料

因此,我查看了/out/artifacts/myapp_web_war_exploded/WEB-INF/lib,但没有看到jar文件。为什么jar不包含在部署中?我应该怎么做才能使其包含在intellij中?

最佳答案

如果这是一个Maven WAR项目,请检查jar是否标记为已排除或在pom中的范围provided中,因为其中任何一个都会从WAR中删除该jar。

如果不是这种情况,请转至pom WAR所在目录的命令行,并执行mvn dependency:tree并确认您的jar确实存在。

如果罐子在那里,则意味着它只能是与IDE相关的问题。请尝试以下步骤:


取消当前服务器
从官方站点下载并解压缩干净的服务器
在IDE中配置新服务器
确保将模块导入为Maven模块,以便IDEA完全基于poms构建编译和部署类路径
如果已经是Maven项目,请单击Maven项目(左上角的隐藏窗格),然后单击重新导入所有Maven项目。
做一个构建->重建项目
单击F4 /库,并确认该库在那里,然后运行服务器

08-26 23:47
查看更多