[英]Running Tomcat from within Eclipse always gives me 404 (but index.html works)
首先是我的軟件堆棧:
我正在使用沒有web.xml的 servlet 3。
我做了什么:
javax.servlet.ServletContainerInitializer
,並將其放入實現WebApplicationInitializer
的完全限定的類名中 目前,我的項目包含約7個文件(3x .java,1x .jsp,1x .html,1x .pom,1x javax.servlet.ServletContainerInitializer)
什么有效:
通過Maven進行編譯和打包,然后將.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文件:
Initializer.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";
}
}
如果您需要更多其他信息,請告訴我。
謝謝!!
編輯:如果已通過Eclipse啟動了Tomcat,我在哪里可以找到它的日志文件?
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。 解決方案非常簡單:
Properties
Deployment Assembly
Add...
Java Build Path Entries
Next
Maven Dependencies
Finish
重新啟動服務器。
現在,我可以在服務器視圖中看到不同之處:
spring-web-3.2.1.RELEASE.jar
。 以前不是這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.