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