gpt4 book ai didi

eclipse - 从 Eclipse 中运行 Tomcat 总是给我 404(但 index.html 有效)

转载 作者:行者123 更新时间:2023-11-28 21:49:06 24 4
gpt4 key购买 nike

首先是我的软件堆栈:

  • eclipse 4.2
  • Tomcat 7.0.37
  • 带有 m2e 插件的 Maven
  • javax.servlet 3.0.1
  • Spring WebMVC 和 Spring Web 3.2.1

我正在使用 servlet 3 没有 web.xml

我做了什么:

  • Eclipse -> 新建 Maven 项目
  • 编辑 pom.xml:添加 Spring 和 javax.servlet
  • Eclipse -> 项目属性 -> 项目方面 -> 添加动态网络方面
  • Eclipse -> 项目属性 -> 部署程序集 -> 删除 WebContent 并添加/src/main/webapp
  • javax.servlet.ServletContainerInitializer 添加到/src/main/webapp/META-INF/services 并放入实现WebApplicationInitializer 的完全限定类名

目前我的项目包含大约 7 个文件(3x .java、1x .jsp、1x .html、1x .pom、1x javax.servlet.ServletContainerInitializer)

什么有效:

通过 Maven 编译和 war 打包,然后简单地将 .war 部署在独立的 Tomcat 上。

  • http://127.0.0.1/MyApp/ 显示index.html
  • http://127.0.0.1/MyApp/hello 显示了 hello.jsp

什么不起作用:

如果我现在尝试通过 Run -> Run on Server 使用 Eclipse。然后我选择我的 Tomcat 目录,等等... servlet (/hello) 只给出 404。但是 index.html 有效。

3 个 Java 文件:

初始化器.java:

public class Initializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(WebAppConfig.class);

Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}
}

WebAppConfig.java:

@Configuration
@ComponentScan("myapp.server")
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}

FooController.java:

@Controller
public class FooController {
@RequestMapping("/hello")
public String helloWorld(Model model) {
model.addAttribute("wisdom", "Goodbye XML");
return "hello";
}
}

如果您需要更多信息,请告诉我。

谢谢!!

编辑:如果 Tomcat 是通过 Eclipse 启动的,我在哪里可以找到它的日志文件?

输出:

Eclipse 控制台(这一切都是在启动 Tomcat 之后出现的,它不会改变,即使我调用一些 URL,如 http://localhost:8080/http://localhost:8080/MyApp/): http://pastebin.com/gGn0j48T

Tomcat 日志似乎保存在 .metadata/.plugins/org.eclipse.wst.server.core/tmp0/logs/ 中。只有一个文件 localhost_access_log.2013-02-20.txt 并且输出看起来并不有趣:http://pastebin.com/QmD4wPmA

现在我已完成此操作以获得 catalina.out:https://stackoverflow.com/a/5045247/1321564

这是重新启动 Tomcat 并尝试一些 URL 后的输出:文件保持为空...?!

我还意识到以下目录在 Tomcat 上是空的:wtpwebapps/MyApp/WEB-INF/lib/。那里不应该有一些 Spring 库吗?!

最佳答案

成功了!!!

如上所述:WEB-INF/lib 文件夹中没有 Spring 库。

而且因为我正在使用 Maven。解决方案非常简单:

  • 右键单击项目
  • 单击属性
  • 单击部署程序集
  • 点击添加...
  • 选择 Java 构建路径条目
  • 点击下一步
  • 选择 Maven 依赖项
  • 点击完成

重新启动服务器。

现在我可以在服务器 View 中看到不同之处:

  • 展开 Tomcat 服务器。现在你可以看到项目
  • 展开项目。 现在列出了 spring-web-3.2.1.RELEASE.jar。以前不是这种情况。

关于eclipse - 从 Eclipse 中运行 Tomcat 总是给我 404(但 index.html 有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14971808/

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