有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Maven中读取属性文件时的java空指针

我有一个属性文件url.properties,位于maven webapp项目的src/main/resources文件夹中,希望从类中读取它。我怎么做?我尝试使用以下代码库,但出现错误

src/main/resources/url。性质

tax.service.url=http://secdevapp11.gspt.net:8080/istore-tax-service/rest/tax

税务客户。爪哇

  public static String getTaxServiceUrl() {
        String taxServiceUrl = "";
        try {
            Properties props = GenericUtils.loadProperties("/url.properties");
            log.debug("props = " + props);
            taxServiceUrl = props.getProperty("tax.service.url");
            log.debug("taxServiceUrl = " + taxServiceUrl);
        } catch (IOException ioe) {
            log.debug("Failed to read properties file: url.properties");
        }
        return taxServiceUrl;
    }

一般细节。爪哇

public static Properties loadProperties(String fileName) throws IOException {
        Properties prop = new Properties();
        InputStream in = ClassLoader.getSystemResourceAsStream(fileName);
        prop.load(in);
        return prop;
    }

波姆。xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <failOnMissingWebXml>true</failOnMissingWebXml>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>gif</nonFilteredFileExtension>
            <nonFilteredFileExtension>ico</nonFilteredFileExtension>
            <nonFilteredFileExtension>jpg</nonFilteredFileExtension>
            <nonFilteredFileExtension>png</nonFilteredFileExtension>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
        <webResources>
            <resource>
                <directory>src/main/webapp</directory>
                <filtering>true</filtering>
            </resource>
        </webResources>                    
    </configuration>
</plugin>

错误日志:

SEVERE: Servlet.service() for servlet [CheckoutPaymentController] in context with path [/istore-mvc2-webapp] threw exception
java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at com.istore.utils.GenericUtils.loadProperties(GenericUtils.java:319)
    at com.istore.web.service.client.TaxClient.getTaxServiceUrl(TaxClient.java:44)
    at com.istore.web.service.client.TaxClient.getTaxAmount(TaxClient.java:19)
    at com.istore.utils.TaxCalculator.getSalesTax(TaxCalculator.java:16)
    at com.istore.web.controllers.CheckoutPaymentController.getTaxableAmt(CheckoutPaymentController.java:52)
    at com.istore.web.controllers.CheckoutPaymentController.processRequest(CheckoutPaymentController.java:72)
    at com.istore.web.controllers.CheckoutPaymentController.doPost(CheckoutPaymentController.java:175)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

共 (1) 个答案

  1. # 1 楼答案

    把文件名前面的“/”去掉。您不是在路径上查找文件,而是要求类加载器按名称查找资源,您的文件名为“url.properties”,而不是“/url.properties”