java - 我设置了 CATALINA_HOME 的 PATH 变量,但是当我尝试在 java 中创建新文件时出错

标签 java linux tomcat ubuntu catalina

首先,我设置了 PATH 变量 CATALINA_HOME=/opt/tomcat 然后我在终端中检查它 cd $CATALINA_HOME 它是有效的。
其次,我创建了 file.properties 并编写了 catalina.home=%CATALINA_HOME%
最后,我尝试运行以下代码


@Autowired Enviroment enviroment;
String path = environment.getProperty("catalina.home") + File.separator + "webapps" + File.separator + "templates" + File.separator;
File dir = new File(path);
但这不起作用

 
Caused by: java.io.FileNotFoundException: %CATALINA_HOME%/webapps/templates does not exist.
    at freemarker.cache.FileTemplateLoader$1.run(FileTemplateLoader.java:124)
    at java.security.AccessController.doPrivileged(Native Method)
    at freemarker.cache.FileTemplateLoader.(FileTemplateLoader.java:121)
    at freemarker.cache.FileTemplateLoader.(FileTemplateLoader.java:107)
    at freemarker.template.Configuration.setDirectoryForTemplateLoading(Configuration.java:439)

最佳答案

如果你想在Java中获取环境变量CATALINA_HOME的值,使用System.getenv("CATALINA_HOME")

我不确定是什么让您认为 .properties 文件会使用环境变量值。它根本不这样做。如果您在属性文件中设置了 catalina.home=%CATALINA_HOME%,那么您从属性 catalina.home 返回的值将始终是字符串 %CATALINA_HOME%。此外,File 类根本不会注意环境变量值。在您的情况下,%CATALINA_HOME%/webapps/templates 不存在,因为(几乎可以肯定)在 Tomcat 的当前工作目录中没有名为 %CATALINA_HOME% 的子目录。

关于java - 我设置了 CATALINA_HOME 的 PATH 变量,但是当我尝试在 java 中创建新文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661218/

相关文章:

java - 创建多个彼此相邻的 1 对象(类似网格)

java - 将 JTextArea 中的内容保存到带有行分隔符的文件中

linux - 统计文件中字符的出现次数

linux - FTP 脚本不工作

spring - Spring + Tomcat 什么时候不够强大?

java - 动态创建 jCheckBox 并添加到 jScrollPane

java - Spring 网络服务: Adding Arrays/Collections to a response

c++ - 使用 C++ 在 Linux 0.01 中为 "Semaphore"添加系统调用

tomcat - 部署到tomcat服务器时出现JPA错误

java - 在 Elastic Beanstalk 上更改 Apache Tomcat 的文件编码