簡體   English   中英

從Eclipse中運行Tomcat總是可以得到404(但是index.html可以工作)

[英]Running Tomcat from within Eclipse always gives me 404 (but index.html works)

首先是我的軟件堆棧:

  • Eclipse 4.2
  • Tomcat 7.0.37
  • Maven與M2E插件
  • javax.servlet 3.0.1
  • Spring WebMVC和Spring Web 3.2.1

我正在使用沒有web.xml的 servlet 3。

我做了什么:

  • Eclipse->新Maven項目
  • 編輯pom.xml:添加Spring和javax.servlet
  • Eclipse->項目屬性->項目構面->添加動態Web構面
  • Eclipse->項目屬性->部署程序集->刪除WebContent並添加/ src / main / webapp
  • 在/ src / main / webapp / META-INF / services中添加了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.outhttps : //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

重新啟動服務器。

現在,我可以在服務器視圖中看到不同之處:

  • 展開Tomcat服務器。 現在您可以看到項目
  • 展開項目。 現在列出了spring-web-3.2.1.RELEASE.jar 以前不是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM