【发布时间】:2020-03-06 12:49:43
【问题描述】:
我目前正在 Apache Tomcat 上部署一个 .war 文件。
我已经完成了数据库的设置,ROOT.war文件已经部署在/opt/tomcat/webapps/上。
我被分配部署的 ROOT.war 文件还附带一个 application.properties 文件。
我所做的是将 application.properties 文件放在 ROOT 文件夹的根目录下。像这样:
当我尝试启动它时,Tomcat Web 应用程序管理器会抛出此错误:
FAIL - 上下文路径/应用程序无法启动 FAIL - 遇到异常 org.apache.catalina.LifecycleException: Failed 启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
我接下来要做的是检查位于 /opt/tomcat/logs/catalina.out 中的日志
这一行让我预感问题在于我的 application.properties 文件的位置。
2020-03-06 11:42:15.978 警告 4219 --- [io-8080-exec-27] ConfigServletWebServerApplicationContext:遇到异常 在上下文初始化期间 - 取消刷新尝试: org.springframework.beans.factory.BeanDefinitionStoreException:失败 解析配置类[asia.edusuite.sample.Application]; 嵌套异常是 java.lang.IllegalArgumentException: 不能 解析占位符“property.location”的值 “文件:${property.location}/application.properties”
你认为我应该把 application.properties 文件放在哪里?
非常感谢! -杰里米C
【问题讨论】:
-
我认为它必须在
/WEB-INF/classes -
我试着把它放在
WEB-INF/classes中,但我运气不好,它没有用。我仍然收到Could not resolve placeholder 'property.location' in value "file:${property.location}/application.properties"错误。非常感谢! -
可能是
@PropertySource注解没有正确使用。输出中打印的值对我来说似乎很奇怪。我更熟悉@PropertySource({ "classpath:application.properties" })或@PropertySource(value={"file:application.properties"})。我不确定您是否可以使用这种逻辑为您的 application.properties 定义自定义位置。当您尝试解析 application.properties 的路径时,尝试读取 application.properties 中的位置可能无法解析它。 -
非常感谢您的意见。恐怕我没有 Java 应用程序的源文件。我的任务是部署它以在 Apache Tomcat 上运行。再次,非常感谢队友!
-
在这种情况下,如果它不是一个新的应用程序并且它已经部署在过去,我可能是错误的。如果这从未部署过,您应该向开发人员显示错误输出!没问题,希望对你有帮助!