我使用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会失败?
答案 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。
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文件以查找确切原因。可能是数据库凭据错误或找不到类定义。