Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行Java Web App时未找到类_Java_Spring_Eclipse_Spring Mvc - Fatal编程技术网

执行Java Web App时未找到类

执行Java Web App时未找到类,java,spring,eclipse,spring-mvc,Java,Spring,Eclipse,Spring Mvc,我对Java环境(Eclipse、Spring等)非常陌生,目前正在浏览一些入门教程。我刚刚完成了SpringMVC的HelloWorld教程,其中有一个简单的页面,然后发布到另一个动作。很简单 然后,我继续对该教程的工作结果进行了一些修改。我的第一次尝试是在Eclipse中创建另一个项目,其中只包含一些简单的包含POJO的包。其想法是让不同的应用程序可以使用一些可移植的东西。(旨在相当于.NET世界中的“类库”项目。) 该项目有一个包,一个接口(IWorld)和一个类(HelloWorld)。

我对Java环境(Eclipse、Spring等)非常陌生,目前正在浏览一些入门教程。我刚刚完成了SpringMVC的HelloWorld教程,其中有一个简单的页面,然后发布到另一个动作。很简单

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

该项目有一个包,一个接口(
IWorld
)和一个类(
HelloWorld
)。在SpringMVC项目中,我将另一个项目添加到构建路径中,并在控制器中创建该对象的实例。编译器说一切正常:

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()
方法不做任何值得注意的事情,只返回一个控制器尚未使用的值。当然,我们的目的是开始在模型中构建一些特性,而不仅仅是在控制器和视图中,从而构建更丰富的领域模型

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的依赖注入有关吗?我应该用这个吗?我不会认为这是一个可注入依赖项,我只是直接创建一个实例。但我也从一种非常教条的.NET心态来看待这个问题,所以所有的赌注都没有了


我在这里缺少什么?

您使用的是springframework,因此可以创建
com.sandbox.domain.models.IWorld
的bean,并使用
@Autowired
tp依赖注入。参考代码

@Autowired
private IWorld world;

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


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

您需要打包“类库”,并将其包含在spring应用程序中。在Java中,这通常是一个错误。通常我们会使用它来打包库(它是一个项目理解/依赖关系管理工具)。正是
maven
使用了
pom.xml
。eclipse的
maven
插件称为m2e。而且您可能会想要删除您的项目。@ElliottFrisch:我可以在Eclipse中手动执行一些操作来包含它吗?我正在查看MVC项目的属性,我看到在“项目引用”下选择的其他项目以及在“Java构建路径”中的项目下列出的其他项目。至少听起来我应该比我预期的更早地查阅Maven教程。(编辑:刚刚看到你的编辑。mavenize链接看起来非常有用,谢谢!)这让我开始运行。具体地说(现在我回忆起过去类似的工作),我需要将“类库”项目添加到项目属性的“部署程序集”部分。谢谢