这是我项目的Maven结构
应用程序 > 通用模块 > webapp 模块 > 批处理模块 pom.xml
common-module
暴露一个类Version
。webapp 和批处理模块都使用此类。
该类Version
有一个独特的静态方法,称为get
. 它返回项目的全局版本。
全局版本存储在属性文件中。当get
从批处理模块(一个独立的 java 应用程序)调用时,属性文件被成功加载。
在 webapp 中,情况有所不同。我创建了一个托管 bean VersionBean
,它允许任何 JSF 页面调用该get
方法。每当我使用以下其中一项
FacesContext.getCurrentInstance().getExternalContext()
FacesContext.getCurrentInstance().getExternalContext().getContext()
Thread.currentThread().getClassLoader()
我永远找不到properties.file。
如何从托管 bean 加载位于 jar 文件中的属性文件 (getResourceAsStream)?
编辑
这是我根据@BalusC 和@eljunior 的建议提出的解决方案
版本Bean.java
@ManagedBean(eager=true)
@ApplicationScoped
public class VersionBean {
private String version;
@PostConstruct
public void init(){
version = Version.get();
}
}
版本.java
public class Version {
public static String get() {
InputStream is = Version.class.getResourceAsStream("/version.properties");
// Read InputStream and return version string ...
}
}