gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:05:52 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com