【发布时间】:2013-10-10 08:09:13
【问题描述】:
我的 Spring 项目已成功部署在另一台 Linux 服务器上。但是当我尝试在这个 Linux 服务器上部署它时,它不会部署。当我转到主页时,我收到错误“HTTP Status 404 - The requested resource is not available”。
我比较了两台服务器的 Tomcat 目录,只看到“工作”目录中的差异。在这台服务器上(有问题的那个),在Tomcat的“work\Catalina\localhost\MyProject”目录下,我看到它是空的。原来这些文件被放在“work\Catalina\localhost\_”下。是什么导致 Tomcat 这样做?
在我的 tomcat 日志文件中,我得到了这个:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SampleService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.wdc.hydra.dao.DatatypeDAO com.wdc.hydra.service.DatatypeServiceImpl.datatypeDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SampleDAO': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Sample' defined in class path resource [Sample-dao-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
有人知道为什么会这样吗?谢谢。
【问题讨论】:
-
所以这个问题是关于部署你的 Spring 应用程序的能力 - 我猜是版本不匹配
-
标题具有误导性。这不是描述您的问题,而是基于假设。我对您的问题的猜测是两个不同 linux 服务器之间的 tomcat /lib 文件夹中的持久性框架版本不同。
-
我有一个用来设置 Tomcat 的脚本。 Tomcat 可以在两台服务器上运行,但我的项目只能部署在一台服务器上。我比较了两台服务器的 Tomcat 目录结构,除了我上面描述的“工作”目录之外,它们完全相同(减去一些细微差别)。
-
正如 Matthias 所说,问题可能是由于您的持久性框架的不同版本造成的。由此产生的 NoSuchMethodError 阻止了 Tomcat 完全部署应用程序 - 因此将工作目录留空。您说两次安装之间的目录结构相同。你能确认持久化jar文件的版本是一样的吗?您可能需要展开 jar 并查看 META-INF/MANIFEST.MF 文件。特别是 Specification-Version 属性。