【问题标题】:Null pointer when deploying WAR(s)部署 WAR(s) 时的空指针
【发布时间】:2012-02-08 07:56:23
【问题描述】:

我在 /home/local/deploy/eclipse/webapps 中有 3 个 WAR 文件。它们是使用 Ant 构建文件生成的。现在,我想从命令行使用 Tomcat 部署它们。我的 server.xml 中的相关 sn-p 如下所示:

<Host appBase="/home/local/deploy/eclipse/webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Context docBase="/home/local/deploy/eclipse/webapps/VechileTracking" 
         Path="/V" reloadable="true" 
         source="org.eclipse.jst.jee.server:VechileTracking"/>
    <Context docBase="/home/local/deploy/eclipse/webapps/RE"  
         Path="/RouteEngine" reloadable="true" 
         source="org.eclipse.jst.jee.server:RouteEngine"/>
    <Context docBase="/home/local/deploy/eclipse/webapps/Main" 
         Path="/GHyd" reloadable="true" 
         source="org.eclipse.jst.jee.server:Main"/>
</Host>

问题是,每当我执行“sh startup.sh”时,都会出现空指针异常,如下所示:

INFO: Deploying web application archive VechileTracking.war
- java.lang.NullPointerException
    at java.io.FileInputStream.<init>(FileInputStream.java:116)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:306)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:324)
    at com.stw.server.infrastructure.ApplicationContextListener.contextInitialized(Unknown Source)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

Feb 8, 2012 1:13:58 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive RE.war
- 
java.lang.NullPointerException
    at java.io.FileInputStream.<init>(FileInputStream.java:116)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:306)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:324)
    at com.stw.routeengine.infrastructure.ApplicationContextListener.contextInitialized(Unknown Source)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Feb 8, 2012 1:14:00 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive Main.war
- java.lang.NullPointerException
    at java.io.FileInputStream.<init>(FileInputStream.java:116)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:306)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:324)
    at com.stw.server.infrastructure.ApplicationContextListener.contextInitialized(Unknown Source)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

我试图在给出(未知来源)的方法中插入打印语句,但是,它没有进入那里。还有什么问题? WAR 文件已解压且正确。

编辑: 嗨,问题解决了。问题是上下文路径和应用程序库以及主属性文件中给出的路径并不完全相同。因此,某些事情或其他事情一直在出错。谢谢。关于 log4j,属性是在属性文件中定义的。

【问题讨论】:

    标签: java deployment war tomcat7


    【解决方案1】:

    在指定位置找不到 log4j 配置文件。

    看看你的相关源代码,url或者(相对?)文件名无法解析。

    提示:

    启动一个远程调试会话(用 eclipse 不太难)并使调试器在 NPE 异常时停止。然后您应该能够读取实际的文件名并能够将丢失的文件复制/部署到正确的位置。

    【讨论】:

      【解决方案2】:

      log4j 属性/xml 中指定的日志文件/目录不存在。

      【讨论】:

        【解决方案3】:

        所有异常都来自org.apache.log4j.PropertyConfigurator,这意味着您的应用程序已经加载完毕,并且 log4j 的配置可能很糟糕/丢失

        查看您的 web.xml 以获取配置 od 侦听器

        com.stw.server.infrastructure.ApplicationContextListener
        

        【讨论】:

          猜你喜欢
          • 2011-10-07
          • 1970-01-01
          • 2012-12-04
          • 1970-01-01
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多