原始服务器没有找到目标资源的当前表示,或者不愿意透露存在该目标资源。在部署到tomcat

时间:2017-04-24 13:52:32

标签: java spring eclipse maven tomcat

我使用Spring和Eclipse IDE构建了一个应用程序。当我从Eclipse IDE启动项目时,一切都很好但是当我将maven项目打包为war文件并部署到单独的tomcat时我有这个问题

The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

这是我的xml文件的配置片段

<!-- View Resolver -->
    <beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/pages/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

我正在尝试访问此控制器

@RequestMapping(value = {"/welcome", "/"})
    public String defaultPage() {
            return "Web Service data successfuly consumed";


    }

任何人都知道为什么部署到tomcat会失败?

15 个答案:

答案 0 :(得分:8)

我多次挣扎于这个问题。

我目前使用的解决方案是使用webapp(或保存jsp等视图的文件夹)处于部署程序集中。

要执行此操作Right click on the project > Build Path > Configure Build path > Deployment Assembly > Add(right hand side) > Folder > (add your jsp文件夹。在默认情况下,它是src/main/webapp

在你做了一切正确的事情之后你也可能会得到这个错误但是在JSP上你把锚标记变成了旧时尚(如果它帮助其他人有同样的问题,我会添加这个错误)。

我在jsp上有以下语法。 <a href="/mappedpath">TakeMeToTheController</a>我一直看到问题中提到的错误。但是,将标签更改为下面显示的标签可以解决问题。

<a href=" <spring:url value="/mappedpath" /> ">TakeMeToTheController</a>

答案 1 :(得分:5)

我在Spring Boot应用程序中工作时遇到了同样的错误,因为当作为Spring Boot运行时,很容易做localhost:8080/hello/World但是当你构建工件并部署到Tomcat时,你需要切换到使用localhost:8080/<artifactName>/hello/World

答案 2 :(得分:3)

如果您正在开发spring boot应用程序,请添加&#34; SpringBootServletInitializer&#34;如下面的代码所示,主文件。因为没有SpringBootServletInitializer,Tomcat会将它视为普通应用程序,它不会将其视为Spring启动应用程序

update client set ref='ABCD' where ref='XXX'

答案 3 :(得分:1)

我也面临同样的问题,我通过将web.xml文件和applicationcontext.xml文件放在WEB-INF文件夹中来解决它。

希望这会有所帮助:)

答案 4 :(得分:0)

尝试在Eclipse中运行servlet(右键单击+“Run on Server”)我遇到了同样的问题: “HTTP状态:404 /说明:原始服务器未找到目标资源的当前表示,或者不愿意透露存在该目标资源。” 添加index.html没有帮助,也没有改变tomcat的各种设置。

最后,我在一个意想不到的地方发现了问题:在Eclipse中,未设置选项“自动构建”。因此,servlet没有被编译,并且没有文件“myServlet.class”被部署到服务器(在我的情况下在路径.wtpwebapps / projectXX / WEB-INF / classes / XXpackage /中)。 手动构建项目并重新启动服务器解决了这个问题。

我的环境:Eclipse Neon.3版本4.6.3,Tomcat-Version 8.5.14。,OS Linux Mint 18.1。

答案 5 :(得分:0)

如果是maven项目,Maven Update会解决问题 - 右键单击​​Project - &gt; Maven - &gt;更新项目并正常启动项目。

答案 6 :(得分:0)

解决方案一:更改apache tomcat的版本(首选最新版本)(手动流程)。

解决方案二:安装最新的eclipse IDE并配置apache tomcat服务器(内部自动进程i,eclipse处理配置部分)。

自动化过程成功后,手动过程应运行良好。

答案 7 :(得分:0)

在Eclipse中转到Project - &gt;在尝试执行

之后自动点击构建

答案 8 :(得分:0)

我面临着同样的问题。

右键单击->在服务器上运行,然后手动选择服务器即可。

Alt+Shift+X

然后手动选择服务器。可能有帮助。

答案 9 :(得分:0)

通过在/opt/apache-tomcat-8.5.37/conf/Catalina/localhost中创建geoexplorer.xml文件可以解决几乎相同的问题 geoexplorer.xml文件的内容为

<Context displayName="geoexplorer" docBase="/usr/share/opengeo/geoexplorer" path="/geoexplorer"/>

答案 10 :(得分:0)

我面临着同样的问题,并且在@tadtab的回答中得到了一些提示,因此我能够在我的项目中找到解决同一问题的解决方案。

步骤:

1->按照@tadtab答案中提到的步骤进行操作。

2->右键单击项目->单击属性->搜索部署程序集。

3->搜索屏幕上是否存在您的文件夹。 (如果没有,请添加它。)

4->在屏幕上,您将找到与您的源文件夹相对应的“ Deploy Path”列。复制该路径。就我而言,是/ views。

enter image description here 5->因此,基本上,在 setPrefix()方法中,我们应该在部署时具有路径。 之前我只是在 setPrefix()方法中使用/ views,所以我遇到了同样的错误。但是之后,它运行良好。

@Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();

        resolver.setPrefix("/WEB-INF/classes/");
        resolver.setSuffix(".jsp");

        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;

    }

同样也应适用于XML配置。

答案 11 :(得分:0)

当您尝试从控制器页面运行项目时,甚至可能发生此问题。 从jsp页面运行项目。 转到您的jsp页面;右键单击->运行方式->在服务器上运行。 我遇到了同样的问题。我正在从控制器页面运行项目。 从jsp页面运行项目。

答案 12 :(得分:0)

您的调度程序servlet不在哪里调度请求。问题是您的控制器bean未创建/无法工作。

即使我遇到了同样的问题。然后在mvc-config.xml下添加以下内容

<mvc:annotation-driven/>
<context:component-scan base-package="com.nsv.jsmbaba.teamapp.controller"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix"><value>/WEB-INF/view/</value></property>
    <property name="suffix"><value>.jsp</value></property>
</bean>

希望这会有所帮助

答案 13 :(得分:0)

检查Java版本对我来说这是个问题。 IDE(在我的情况下为Intellij)可以正常启动,但是当我尝试在tomcat docker image应用中运行war时不起作用。原因是Docker映像与开发环境相比具有不同(较低)的版本。没有错误消息表明其中任何一个。

答案 14 :(得分:0)

如果以上所有答案均失败,请通过阅读tomcat安装日志文件夹中的日志来检查根本原因。阅读catalina.out文件以查找确切原因。可能是数据库凭据错误或找不到类定义。