Java 源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。关于部署到tomcat

Java 源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。关于部署到tomcat,java,spring,eclipse,maven,tomcat,Java,Spring,Eclipse,Maven,Tomcat,我已经使用Spring和EclipseIDE构建了一个应用程序。当我从EclipseIDE启动项目时,一切都很好,但是当我将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文件中的一个配置片段 <

我已经使用Spring和EclipseIDE构建了一个应用程序。当我从EclipseIDE启动项目时,一切都很好,但是当我将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>

有人知道为什么部署到tomcat会失败吗?

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

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


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

在Spring Boot应用程序中工作时,我收到了相同的错误,因为当以Spring Boot运行时,很容易执行
localhost:8080/hello/World
,但是当您构建了工件并部署到Tomcat时,然后您需要切换到使用
localhost:8080//hello/World

如果是maven项目,那么maven更新将解决问题-右键单击project-->maven-->更新项目并正常启动项目。

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

解决方案二:安装最新的EclipseIDE并配置ApacheTomcat服务器(内部自动进程,即eclipse处理配置部分)


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

我多次与这个问题作斗争

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

为此,
右键单击项目>生成路径>配置生成路径>部署程序集>添加(右侧)>文件夹>(添加jsp
文件夹。默认情况下,它是
src/main/webapp

在所有操作都正确之后,您也可能会出现此错误,但是在JSP上,您以旧的方式放置了锚标记(我正在添加此项,以防它帮助其他人解决相同的问题)

我在jsp上使用了以下语法<代码>我一直看到问题中提到的错误。但是,将标签更改为下图所示的标签解决了问题

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

在Eclipse中转到项目-->在您尝试执行后单击“自动生成”

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


希望这有帮助:)

如果您正在开发spring boot应用程序,请在主文件中添加“SpringBootServletializer”,如以下代码所示。因为没有Spring BooServices初始化器Tomcat会将其视为正常应用程序,所以它不会被认为是Spring启动应用程序

@SpringBootApplication
public class DemoApplication extends *SpringBootServletInitializer*{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(DemoApplication .class);
    }

    public static void main(String[] args) {
         SpringApplication.run(DemoApplication .class, args);
    }
}

我也面临同样的问题

当我右键单击->在服务器上运行,然后手动选择我的服务器时,它工作了


然后手动选择您的服务器。这可能会有所帮助。

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

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

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

步骤:

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

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

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

4->在屏幕上,您将找到与源文件夹对应的“部署路径”列。复制该路径。就我而言,它是/视图

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配置。

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

您的dispatcher 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>

/WEB-INF/view/
.jsp

希望这有助于检查Java版本,这对我来说是个问题。IDE(在我的例子中是Intellij)可以毫无问题地启动,但当我试图在tomcat docker image应用程序中运行
war
时,它没有工作。原因是docker image与开发环境的版本不同(更低)。没有显示任何错误消息。

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

通过自下而上创建新的maven项目,然后重新添加现有包和xml文件,解决了此问题
@Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();

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

        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;

    }
<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>