org.mortbay.start.Main.init(Main.java:465)的码头NPE

时间:2013-04-19 14:06:48

标签: jetty

启动Jetty 6.1.21有一个奇怪的异常:

c:\TestJetty>java -jar start.jar
java.lang.NullPointerException
    at java.io.File.<init>(File.java:222)
    at org.mortbay.start.Main.init(Main.java:465)
    at org.mortbay.start.Main.start(Main.java:439)
    at org.mortbay.start.Main.main(Main.java:119)

Google建议添加-Djetty.home=.。 Jetty从这个论点开始。但是在其他计算机上码头即使没有这个论点就开始 看起来很奇怪。所有环境看起来都一样 但...

2 个答案:

答案 0 :(得分:2)

让我们看看发生了什么......

首先,我的环境

C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name:                   Microsoft Windows 7 Home Premium
OS Version:                6.1.7601 Service Pack 1 Build 7601

C:\jetty-6.1.21>java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)


C:\jetty-6.1.21>dir
 Volume in drive C has no label.
 Volume Serial Number is C8CF-820B

 Directory of C:\jetty-6.1.21

04/19/2013  11:51 AM    <DIR>          .
04/19/2013  11:51 AM    <DIR>          ..
04/19/2013  11:51 AM    <DIR>          bin
04/19/2013  11:50 AM    <DIR>          contexts
04/19/2013  11:51 AM    <DIR>          contrib
04/19/2013  11:50 AM    <DIR>          distribution
04/19/2013  11:51 AM    <DIR>          etc
04/19/2013  11:51 AM    <DIR>          examples
04/19/2013  11:50 AM    <DIR>          extras
04/19/2013  11:51 AM    <DIR>          javadoc
04/19/2013  11:51 AM    <DIR>          jxr
04/19/2013  11:51 AM    <DIR>          lib
04/19/2013  11:51 AM    <DIR>          LICENSES
09/21/2009  11:07 PM    <DIR>          logs
04/19/2013  11:51 AM    <DIR>          modules
09/21/2009  11:07 PM             1,621 NOTICE.txt
04/19/2013  11:51 AM    <DIR>          patches
09/22/2009  12:17 AM             9,170 pom.xml
04/19/2013  11:51 AM    <DIR>          project-website
09/21/2009  11:07 PM             4,253 README.txt
04/19/2013  11:51 AM    <DIR>          resources
09/22/2009  04:44 PM            17,239 start.jar
09/21/2009  11:07 PM           161,333 VERSION.txt
04/19/2013  11:50 AM    <DIR>          webapps
               5 File(s)        193,616 bytes
              19 Dir(s)  315,649,884,160 bytes free

接下来,让我们正常试试......

C:\jetty-6.1.21>java -jar start.jar
2013-04-19 11:54:10.334::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
2013-04-19 11:54:11.019::INFO:  jetty-6.1.21
2013-04-19 11:54:11.133::INFO:  Deploy C:\jetty-6.1.21\contexts\test.xml -> org.
mortbay.jetty.webapp.WebAppContext@19616c7{/,C:\jetty-6.1.21/webapps/test}
2013-04-19 11:54:11.171::INFO:  Deploy C:\jetty-6.1.21\contexts\javadoc.xml -> o
rg.mortbay.jetty.handler.ContextHandler@3bb2b8{/javadoc,file:/C:/jetty-6.1.21/ja
vadoc/}
2013-04-19 11:54:11.287::INFO:  Deploy C:\jetty-6.1.21\contexts\test-jndi.xml ->
 org.mortbay.jetty.webapp.WebAppContext@1df38fd{/test-jndi,C:\jetty-6.1.21/conte
xts/test-jndi.d}

它按预期工作。

让我们介绍C:\start.jar

存在的皱纹
C:\>dir *.jar
 Volume in drive C has no label.
 Volume Serial Number is C8CF-820B

 Directory of C:\

04/19/2013  12:15 PM                 1 start.jar
               1 File(s)              1 bytes
               0 Dir(s)  315,647,086,592 bytes free

C:\jetty-6.1.21>java -jar start.jar
java.lang.NullPointerException
        at java.io.File.<init>(Unknown Source)
        at org.mortbay.start.Main.init(Main.java:465)
        at org.mortbay.start.Main.start(Main.java:439)
        at org.mortbay.start.Main.main(Main.java:119)

是的,这是不正确的行为。让我们看看码头的想法......

C:\jetty-6.1.21>java -DDEBUG -jar start.jar
config=org/mortbay/start/start.config
T $(jetty.class.path).path                         always
F $(jetty.lib)/**                                  exists $(jetty.lib)
F jetty.home=.                                     ! exists $(jetty.home)/start.jar
F jetty.home=..                                    ! exists $(jetty.home)/start.jar
F jetty.home=/home/jetty                           ! exists $(jetty.home)/start.jar
F jetty.home=/C:/jetty                             ! exists $(jetty.home)/start.jar
F jetty.home=.                                     ! exists $(jetty.home)/start.jar
T org.mortbay.xml.XmlConfiguration.class
  CLASS=org.mortbay.xml.XmlConfiguration
T $(start.class).class
T $(jetty.home)/etc/jetty.xml                      nargs == 0
  ARGS+=\etc\jetty.xml
T $(jetty.home)/lib/*                              always
T $(jetty.home)/lib/jsp-2.1/*                      java >= 1.5
T $(jetty.home)/lib/jsp-2.0/*                      ! available org.apache.jasper.servlet.JspServlet
T $(jetty.home)/lib/management/*
F $(jetty.home)/lib/management/mx4j/*              java < 1.5
T $(jetty.home)/lib/naming/*
T $(jetty.home)/lib/plus/*
T $(jetty.home)/lib/xbean/*
T $(jetty.home)/lib/wadi/*
T $(jetty.home)/lib/grizzly/*
T $(jetty.home)/lib/annotations/*                  java >= 1.5

T $(jetty.home)/lib/jre1.5/**                      java >= 1.5
T $(jetty.home)/lib/ext/**                        always
T /usr/share/java/ant.jar                          ! available org.apache.tools.ant.Main
T $(jetty.home)/resources/
  !C:\resources
java.lang.NullPointerException
        at java.io.File.<init>(Unknown Source)
        at org.mortbay.start.Main.init(Main.java:465)
        at org.mortbay.start.Main.start(Main.java:439)
        at org.mortbay.start.Main.main(Main.java:119)

是的,$(jetty.home)的每次测试都会返回F(错误)

您似乎在org.mortbay.start.Main(而不是start.config)中发现了一个错误。

不幸的是,这个Jetty 6错误将无法修复,因为Jetty 6已在多年前停止使用。

让我们看看Jetty 7,8或9中是否存在这个错误?

C:\jetty-distribution-7.6.10.v20130312>java -jar start.jar
2013-04-19 12:21:33.910:INFO:oejs.Server:jetty-7.6.10.v20130312
2013-04-19 12:21:33.947:INFO:oejdp.ScanningAppProvider:Deployment monitor C:\jet
ty-distribution-7.6.10.v20130312\webapps at interval 1
2013-04-19 12:21:33.956:INFO:oejd.DeploymentManager:Deployable added: C:\jetty-d
istribution-7.6.10.v20130312\webapps\spdy.war
2013-04-19 12:21:34.078:INFO:oejw.WebInfConfiguration:Extract jar:file:/C:/jetty
-distribution-7.6.10.v20130312/webapps/spdy.war!/ to C:\Users\joakim\AppData\Loc
al\Temp\jetty-0.0.0.0-8080-spdy.war-_spdy-any-\webapp

C:\jetty-distribution-8.1.10.v20130312>java -jar start.jar
2013-04-19 12:21:46.946:INFO:oejs.Server:jetty-8.1.10.v20130312
2013-04-19 12:21:46.984:INFO:oejdp.ScanningAppProvider:Deployment monitor C:\jet
ty-distribution-8.1.10.v20130312\webapps at interval 1
2013-04-19 12:21:46.995:INFO:oejd.DeploymentManager:Deployable added: C:\jetty-d
istribution-8.1.10.v20130312\webapps\spdy.war
2013-04-19 12:21:47.115:INFO:oejw.WebInfConfiguration:Extract jar:file:/C:/jetty
-distribution-8.1.10.v20130312/webapps/spdy.war!/ to C:\Users\joakim\AppData\Loc
al\Temp\jetty-0.0.0.0-8080-spdy.war-_spdy-any-\webapp

C:\jetty-distribution-9.0.2.v20130417>java -jar start.jar
2013-04-19 12:22:19.127:WARN::main: test-realm is deployed. DO NOT USE IN PRODUC
TION!
2013-04-19 12:22:19.132:INFO:oejs.Server:main: jetty-9.0.2.v20130417
2013-04-19 12:22:19.214:INFO:oejs.AbstractNCSARequestLog:main: Opened C:\jetty-d
istribution-9.0.2.v20130417\logs\2013_04_19.request.log
2013-04-19 12:22:19.251:INFO:oejdp.ScanningAppProvider:main: Deployment monitor
[file:/C:/jetty-distribution-9.0.2.v20130417/webapps/] at interval 1
2013-04-19 12:22:19.669:INFO:oejsh.ContextHandler:main: started o.e.j.w.WebAppCo
ntext@3e125554{/,file:/C:/jetty-distribution-9.0.2.v20130417/webapps/ROOT/,AVAIL
ABLE}{C:\jetty-distribution-9.0.2.v20130417\webapps\ROOT}
2013-04-19 12:22:19.703:INFO:oejsh.ContextHandler:main: started o.e.j.s.h.Contex
tHandler@7ffa129b{/javadoc,file:/C:/jetty-distribution-9.0.2.v20130417/javadoc,A
VAILABLE}

Jetty 7,8或9中不存在。

即使测试早期版本的Jetty 7.0.0里程碑,也表明自Jetty 6.1.26以来,Jetty的124个版本中都没有出现此错误。

考虑升级。

答案 1 :(得分:0)

c:\TestJetty>echo 1 > c:\start.jar

c:\TestJetty>java -jar start.jar
java.lang.NullPointerException
        at java.io.File.<init>(Unknown Source)
        at org.mortbay.start.Main.init(Main.java:465)
        at org.mortbay.start.Main.start(Main.java:439)
        at org.mortbay.start.Main.main(Main.java:119)

c:\TestJetty>rm c:\start.jar

c:\TestJetty>java -jar start.jar
2013-04-19 18:03:12.989::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
...