Java 在战争中访问属性文件
我试图在战争中访问我的属性文件。代码正在工作,但当我将代码导出到war中并使用Fiddler使用POST(带有接受的输入)时,它找不到config.properties。(NullPointerException) 输入和Web服务正在正确运行。只是想找到一种在使用war时编辑我的属性的方法 一些事实:Java 在战争中访问属性文件,java,web-applications,properties,war,Java,Web Applications,Properties,War,我试图在战争中访问我的属性文件。代码正在工作,但当我将代码导出到war中并使用Fiddler使用POST(带有接受的输入)时,它找不到config.properties。(NullPointerException) 输入和Web服务正在正确运行。只是想找到一种在使用war时编辑我的属性的方法 一些事实: 我做了一个检索属性类。它使用: properties.load(this.getClass() .getResourceAsStream("/WEB-I
- 我做了一个检索属性类。它使用:
properties.load(this.getClass() .getResourceAsStream("/WEB-INF/config.properties"));
- 我的属性文件路径:
/com.webapp/WebContent/WEB-INF/config.properties
- 我正在尝试在以下位置使用属性数据:
String url = RetreiveProperties.getUrl(); String driver = RetreiveProperties.getDriver(); String username = RetreiveProperties.getUsername(); String password = RetreiveProperties.getPassword(); // line below causes the NullPointerException Class.forName(driver);
- 使用的吸气剂:
public static String getDriver() { return driver = properties.getProperty("jdbc.driver"); }
- 部署war时,属性文件位于:
webapps\com.webapp1\WEB-INF\config.properties
- Config.properties:
jdbc.url = jdbc:postgresql://127.0.0.1:2222/gisdb jdbc.driver = org.postgresql.Driver jdbc.username = postgres jdbc.password = admin
如果要从类路径加载属性文件,它必须位于war中的
WEB-INF/classes
目录中。(或在WEB-INF/lib
的jar内)。WEB-INF
目录本身不在类路径上
如果您确保文件最终为
WEB-INF/classes/config.properties
如果您要从类路径加载属性文件,则将getResourceAsStream
调用更改为getResourceAsStream(“/config.properties”)
,则上述代码应该可以工作,它必须在war的WEB-INF/classes
目录中。(或在WEB-INF/lib
的jar内)。WEB-INF
目录本身不在类路径上
如果您确保文件最终为
WEB-INF/classes/config.properties
如果您将getResourceAsStream
调用更改为getResourceAsStream(“/config.properties”)
如果该方法是静态方法,则getClass()方法将失败,并提示“无法从类型对象对非静态方法getClass()进行静态引用”
相反,您应该使用CurrentClass.class.getClassLoader().getResourceAsStream
来源:如果该方法是静态方法,则getClass()方法将失败,并提示“无法从type对象对非静态方法getClass()进行静态引用” 相反,您应该使用CurrentClass.class.getClassLoader().getResourceAsStream
来源:如果你检查打包war文件的内部,属性文件的路径是什么?啊,忘了提及它。它位于C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB INF中如果你检查打包war文件的内部,属性文件的路径是什么?啊,忘了提一下它在C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INFI将我的属性文件放在:C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INF\classes\com\webapp.I正在使用properties.load(this.getClass().getResourceAsStream(“WEB-INF/classes/com/webapp/config.properties”);来获取该文件,但它仍然不起作用。我是否输入了错别字?P.S.C:\address是我查看war文件时存储属性文件的目录。@Camelaria如果将其放在该路径中,则需要调用getResourceAsStream(“com/webapp/config.properties”)嗯,将加载程序更改为/com/webapp/config.properties。仍然在Class.forName(驱动程序)处获取NullPointerException;。这是我第一次使用属性值的地方。@Camelaria请发布堆栈跟踪。它实际上是作为null或其他内容获得的流吗?我将属性文件放在:C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INF\classes\com\webapp中。我正在使用properties.load(this.getClass().getResourceAsStream(“WEB-INF/classes/com/webapp/config.properties”);来获取该文件,但它仍然不起作用。我是否输入了错别字?请注意,C:\地址是我查看war文件时存储属性文件的目录。@Camelaria如果将其放在该路径中,则需要调用getResourceAsStream(“/com/webapp/config.properties”)嗯,将加载程序更改为/com/webapp/config.properties。在Class.forName(driver);,仍然会得到NullPointerException。这是我第一次使用属性值的地方。@Camelaria请发布堆栈跟踪。它实际上是作为null或其他内容获得的流吗?