java - 执行 Java Web App 时未找到类

标签 java spring eclipse spring-mvc

我对 Java 领域(Eclipse、Spring 等)非常很陌生,目前只是浏览一些介绍性教程。我刚刚完成了 Spring MVC 的 Hello World 教程,其中有一个简单的页面,然后可以发布到另一个操作。足够简单了。

然后我继续对该教程的工作结果进行了一些修改。我的第一次尝试是在 Eclipse 中创建另一个项目,其中仅包含一些包含 POJO 的简单包。我们的想法是拥有一些可供不同应用程序使用的可移植设备。 (旨在相当于 .NET 世界中的“类库”项目。)

该项目有一个包,其中包含一个接口(interface) (IWorld) 和一个类 (HelloWorld)。然后,在我的 Spring MVC 项目中,我将另一个项目添加到构建路径中,并在 Controller 中创建该对象的实例。编译器说一切都很好:

package com.sandbox.application.mvctest.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.sandbox.domain.models.*;

@Controller
public class HelloWorldController {

    @RequestMapping("/")
    public String hello() {
        IWorld world = new HelloWorld();
        world.speak();
        return "hello";
        //TODO: Return a ModelAndView instead
    }

    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String hi(@RequestParam("name") String name, Model model) {
        String message = "Hi " + name + "!";
        model.addAttribute("message", message);
        return "hi";
    }

}

.speak() 方法不执行任何值得注意的操作,仅返回 Controller 尚未使用的值。当然,目的是开始在模型中构建一些功能,而不仅仅是在 Controller 和 View 中,构建更多的丰富域模型。

Eclipse 不会提示代码,一切似乎都编译得很好。但是在 Tomcat 上执行时出现异常:

Jul 05, 2017 12:36:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet [springDispatcher]
java.lang.ClassNotFoundException: com.sandbox.domain.models.IWorld
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1269)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    [and so on...]

到目前为止,我的谷歌搜索毫无结果,可能是因为我并不总能理解我所发现的内容。例如,有一些帖子建议更正 pom.xml 文件中的某些内容。我没有这样的文件。这和Spring的依赖注入(inject)有关吗?我应该用那个吗?我不会认为这是可注入(inject)的依赖项,我只是直接创建一个实例。但我也是从一种非常教条的 .NET 思维方式来处理这个问题的,所以所有的赌注都失败了。

我在这里缺少什么?

最佳答案

如果我正确理解你的问题,那么你期望项目类路径和网络应用程序类路径是相同的。部署 Web 应用程序时,不会自动导出所有依赖项。您可以检查已部署的 Web 应用程序的 WEB-INF/lib 文件夹中的依赖项。

如果您使用 Tomcat 作为 servlet 容器,那么您可以在 Tomcat 的 lib 文件夹中添加依赖项 jar,然后它应该可以工作。

关于java - 执行 Java Web App 时未找到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931793/

相关文章:

java - 如何从 Eclipse 中的 Maven 构建调试测试?

java - 如何将 JSON 对象发布到 URL?

java - 处理 - 根据 jpg 尺寸调整 Canvas 大小

java - Java 和 Python 守护进程之间的数据桥

java - SpringBoot,如何在不使用ldif的情况下使用LDAP进行身份验证?

java - 无法捕获 Spring 中异步方法抛出的异常

java - 使用 API 在 Google 文档中导入 XML 数据源

java - 如何在 Spring 和 Hibernate 中保存当前用户的信息?

java - LibGdx - 安装Android项目

Android - 我似乎没有 ANIM 文件夹或 MAINANIM.xml 文档...这是为什么?