繁体   English   中英

部署WAR时为空指针

[英]Null pointer when deploying WAR(s)

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

<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,属性是在属性文件中定义的。

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

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

暗示:

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

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

所有的优势都来自org.apache.log4j.PropertyConfigurator这意味着您的应用已准备好加载,并且log4j的配置可能很糟糕/缺少配置

请参阅您的web.xml以获取配置侦听器

com.stw.server.infrastructure.ApplicationContextListener

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM