Java 由于指定的配置文件[默认]不匹配,跳过了XML bean定义文件

Java 由于指定的配置文件[默认]不匹配,跳过了XML bean定义文件,java,spring-mvc,tomcat,spring-environment,Java,Spring Mvc,Tomcat,Spring Environment,我们在tomcat上部署了一个Spring应用程序,但它没有启动 应用程序错误如下所示: Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driver

我们在tomcat上部署了一个Spring应用程序,但它没有启动

应用程序错误如下所示:

Caused by: org.springframework.beans.PropertyBatchUpdateException; nested 
PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [${hibernate.connection.driver_class}]
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1564)
... 49 more
我们在以下位置定义了属性文件: /opt/tomcat/appname/tomcat8-2 有三个文件:config.properties、core-ws.properties和log4j-config.xml

我们知道${TOMCAT_CONFIG_HOME}被定义为:/opt/TOMCAT/appname/tomcat8-2

我们知道文件权限是正确的,运行tomcat的用户对该配置目录中的目录和文件具有读取权限。我可以像tomcat用户那样编辑/读取属性文件。所以,我们知道这不是权限问题

从应用程序日志中,我们收到以下错误消息:

Skipped XML bean definition file due to specified profiles [default] not matching: class path resource [spring/app-platform-entity-context.xml]
Spring应用程序上下文文件具有以下属性:

<beans profile="default">
     <context:property-placeholder location="file:${TOMCAT_CONFIG_HOME}/core-ws.properties" />
 </beans>
所以,我研究这件事已经有几天了,我已经不知所措了。我可以告诉您,log4j-config.xml文件没有问题。应用程序可以找到它,并且可以很好地阅读它。这只是一个参数,似乎是崩溃的应用程序


在这件事上任何帮助都将不胜感激。谢谢

跳过XML文件的原因是因为我们在CATALINA_OPTS设置中有一个-Dspring.profiles.active=prod

直到我们开始导出tomcat启动时的值,我们才找到它

一旦我们删除了这一行,我们的[默认]配置文件就会像它应该的那样被删除


谢谢

针对独立应用回答此问题:

在我的例子中,由于设置ApplicationContext的顺序,我在设置概要文件之前加载了xml文件。 正确的顺序是:

  GenericXmlApplicationContext ctx =
            new GenericXmlApplicationContext();
    ctx.getEnvironment().setActiveProfiles("dev");
    ctx.load("com/profiles/*-config.xml");
    ctx.refresh();
  GenericXmlApplicationContext ctx =
            new GenericXmlApplicationContext();
    ctx.getEnvironment().setActiveProfiles("dev");
    ctx.load("com/profiles/*-config.xml");
    ctx.refresh();