Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring概要文件在Linux中不起作用_Java_Linux_Spring_Environment Variables_Spring Profiles - Fatal编程技术网

Java Spring概要文件在Linux中不起作用

Java Spring概要文件在Linux中不起作用,java,linux,spring,environment-variables,spring-profiles,Java,Linux,Spring,Environment Variables,Spring Profiles,我有一个在Windows上开发的web应用程序,之后我将其部署到Linux(过渡nad生产) 我为每个环境创建了3.properties文件: application-dev.properties 应用程序-staging.properties application-prod.properties 我决定实现以下解决方案——在每台机器上创建具有相关值(dev/staging/prod)的环境变量,并根据该变量加载corect.properties文件 这个解决方案在Windows上运行得非

我有一个在Windows上开发的web应用程序,之后我将其部署到Linux(过渡nad生产)

我为每个环境创建了3.properties文件:

  • application-dev.properties
  • 应用程序-staging.properties
  • application-prod.properties
我决定实现以下解决方案——在每台机器上创建具有相关值(dev/staging/prod)的环境变量,并根据该变量加载corect.properties文件

这个解决方案在Windows上运行得非常好,但我无法让它在Linux上以同样的方式运行

这是我的代码:

Web.xml

<context-param>

    <param-name>contextInitializerClasses</param-name>

    <param-value>com.app.server.configuration.ConfigurableApplicationContextInitializer</param-value>

</context-param>
在Linux中,我在大约一百万个地方定义了这个变量(APP_ENV)。在.environment文件、在.bash文件、在setenv.sh文件中。还有,当我做printenv时,我在那里看到了它

我试图创建一个简单的java类main来打印System.getenv(“APP_ENV”)的值和正在打印的“staging”值

但在我的应用程序中,我总是看到-dev而不是staging

我了解登台的唯一方法是将“硬编码”的活动概要文件添加到web.xml

<context-param>  
    <param-name>spring.profiles.active</param-name>  
    <param-value>dev</param-value>  
</context-param>

spring.profiles.active
发展
但我真的不想这样工作,我希望它能被自动地、平庸地识别出来


请帮助:)

原因之一可能是您的tomcat正在另一个用户下运行,因此您可能需要为运行tomcat的用户设置环境变量


您还可以在
$CATALINA_BASE/bin/setenv.sh
文件中为tomcat设置所需的环境变量,原因之一可能是您的tomcat正在另一个用户下运行,因此您可能需要为运行tomcat的用户设置环境变量


您还可以在
$CATALINA_BASE/bin/setenv.sh
文件中设置tomcat所需的环境变量,setenv.sh的正确位置显然是:
usr/share/tomcat7/bin
我有一个值为“dev”的旧文件:)
因此,在修复此文件后,它可以完美地工作:)

显然setenv.sh的正确位置是:
usr/share/tomcat7/bin
我有一个值为“dev”的旧文件:)
因此,在修复此文件后,它可以完美地工作:)

嘿,Zilvinas-谢谢你的回答。我从我的用户那里运行一切——我也是那个安装了Tomcat的人。该值存在于setenv.sh中这是我在setenv.sh:export JAVA_OPTS=“-Dfile.encoding=UTF-8-Xms512m-Xmx4096m-XX:PermSize=128m-XX:MaxPermSize=512m”export APP_ENV=“staging”中的值也许这是不正确的方式?@Vika我想应该是这样的Hey Zilvinas-谢谢你的回答。我从我的用户那里运行一切——我也是那个安装了Tomcat的人。setenv.sh中存在该值这是我在setenv.sh:export JAVA_OPTS=“-Dfile.encoding=UTF-8-Xms512m-Xmx4096m-XX:PermSize=128m-XX:MaxPermSize=512m”export APP_ENV=“staging”可能这是不正确的方式?@Vika我认为应该这样做
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;


@Configuration
@PropertySource("classpath:application-${spring.profiles.active}.properties")
public class ContextsConfiguration {

    @Bean
    public static PropertySourcesPlaceholderConfigurer configurer() {
            return new PropertySourcesPlaceholderConfigurer();
    } 


    @Value("${FTPport}")
    public String FTPport;
    @Value("${FTPserver}")
<context-param>  
    <param-name>spring.profiles.active</param-name>  
    <param-value>dev</param-value>  
</context-param>