gpt4 book ai didi

eclipse - 为什么我在访问独立的 tomcat 实例中的 .properties 文件时遇到问题,但在 eclipse 嵌入式实例中却没有?

转载 作者:行者123 更新时间:2023-11-28 23:54:06 24 4
gpt4 key购买 nike

我在 Eclipse 中编写了一个简单的 Hello World Servlet,在我的 HelloWorldServlet.java 的 doGet 方法中包含以下内容


PrintWriter writer = response.getWriter();
String hello = PropertyLoader.bundle.getProperty("hello");
writer.append(hello);
writer.flush();

PropertyLoader 是与 Servlet 位于同一包中的一个简单类,它执行以下操作:


public class PropertyLoader {
public static final Properties bundle = new Properties();

static {
InputStream stream = null;
URL url = PropertyLoader.class.getResource("/helloSettings.properties");
stream = new FileInputStream(url.getFile());
bundle.load(stream);
}
}//End of class

我在/WebContent/WEB-IND/classes 中放置了一个名为 helloSettings.properties 的文件,其中包含以下单行内容:

hello=Hello Settings World

当我将 Tomcat 6.0 添加到我的项目并在 eclipse 中运行它时,它成功打印

“Hello Settings World”到网络浏览器。

但是,当我将项目导出为 war 文件并手动将其放入 .../Tomcat 6.0/webapps 结果是“null”。

是不是classpath/classloader配置有问题?权限?任何其他配置文件?我知道 helloSettings.properties 文件位于 WEB-INF/classes 文件夹中。

有什么帮助吗?

最佳答案

好吧,经过多次浏览,我发现了一个看似“正常”的原因,即为什么要做我想做的事情:

而不是...(我是怎么做的)

public class PropertyLoader { 

public static final Properties bundle = new Properties();

static {

InputStream stream = null;
URL url = PropertyLoader.class.getResource("/helloSettings.properties");
stream = new FileInputStream(url.getFile());
bundle.load(stream);

}

}//End of class

修复

public class PropertyLoader { 

public static final Properties bundle = new Properties();

static {

InputStream stream = null;
stream = SBOConstants.class.getResourceAsStream("/sbonline.properties");
bundle.load(stream);

}

}//End of class

我正在修改别人的代码,所以我不确定他们为什么一开始就用另一种方式来做……但我想 url.getFile() 是我的问题,我不知道为什么。

关于eclipse - 为什么我在访问独立的 tomcat 实例中的 .properties 文件时遇到问题,但在 eclipse 嵌入式实例中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com