Java Web项目中的属性文件
我将所有编程代码打包在一个jar文件中。我将把这个Jar文件放在我的动态web项目中,以执行Jar中的逻辑 但jar文件有一些逻辑,可以读取.properties文件来获取一些配置值 当我为逻辑运行web项目时,我得到一个错误Java Web项目中的属性文件,java,jakarta-ee,web,properties,Java,Jakarta Ee,Web,Properties,我将所有编程代码打包在一个jar文件中。我将把这个Jar文件放在我的动态web项目中,以执行Jar中的逻辑 但jar文件有一些逻辑,可以读取.properties文件来获取一些配置值 当我为逻辑运行web项目时,我得到一个错误java.io.FileNotFoundException:conf\conf.properties(系统找不到指定的路径) 任何解决此问题的建议请咨询 我也试过了 String propFileName = "conf/conf.properties"; File fil
java.io.FileNotFoundException:conf\conf.properties(系统找不到指定的路径)
任何解决此问题的建议请咨询
我也试过了
String propFileName = "conf/conf.properties";
File file = new File(propFileName);
Properties prop = new Properties();
FileInputStream fileInput = new FileInputStream(file);
prop.load(fileInput);
仅当且仅当您的文件可从调用类的
ClassLoader
访问,并且此处您直接在WEB-INF
下拥有的内容不可访问时,基于的方法才会起作用,您应该在WEB-INF/classes
中移动conf/conf.properties
,并使用/conf/conf.properties
作为资源名,使其从根目录而不是从调用类的包中获取文件。要在servlet项目中读取属性文件WEB-INF文件夹,请执行以下操作
ServletContext.getResourceAsStream("WEB-INF/conf/conf.properties")
我正在读一个类中的属性文件,这个类位于
myJar.jar
中,我没有提到另外一件事。我的jar有过滤器实现。在我的web项目中,我做了一个配置,它将根据URL模式调用这个过滤器。因此,在我的项目中,我没有看到任何WEB-INF/classes
,请在最初的问题中澄清这一点。我不明白你为什么看不到WEB-INF/classes
,因为它可以从webappClassLoader
访问,其中包含jar
文件在'WEB-INF/lib'和目录WEB-INF/classes
中。。我只是一开始误解了你的评论。现在它成功了。。谢谢:)我只是好奇为什么我的第二种方法不起作用?因为我已经把属性文件也放在了一个jar中。当我用main方法在一个简单的java pgm中尝试它时,它已经工作了。如果你想知道用户目录是什么,只需执行这个System.out.println(System.getProperty(“user.dir”)
String propFileName = "conf/conf.properties";
File file = new File(propFileName);
Properties prop = new Properties();
FileInputStream fileInput = new FileInputStream(file);
prop.load(fileInput);
ServletContext.getResourceAsStream("WEB-INF/conf/conf.properties")