jetty NPE位于org.mortbay.start.Main.init(Main.java:465)

jetty NPE位于org.mortbay.start.Main.init(Main.java:465),jetty,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

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)
c:\TestJetty>java-jarstart.jar
java.lang.NullPointerException
位于java.io.File。(File.java:222)
位于org.mortbay.start.Main.init(Main.java:465)
位于org.mortbay.start.Main.start(Main.java:439)
位于org.mortbay.start.Main.Main(Main.java:119)
谷歌建议添加
-Djetty.home=。
。Jetty从这个论点开始。但在其他计算机上,即使没有这个争论,jetty也会启动。。。 看起来很奇怪。所有环境看起来都一样。 但是…

c:\TestJetty>echo 1>c:\start.jar
c:\TestJetty>java-jarstart.jar
java.lang.NullPointerException
位于java.io.File。(未知源)
位于org.mortbay.start.Main.init(Main.java:465)
位于org.mortbay.start.Main.start(Main.java:439)
位于org.mortbay.start.Main.Main(Main.java:119)
c:\TestJetty>rmc:\start.jar
c:\TestJetty>java-jarstart.jar
2013-04-19 18:03:12.989::信息:通过org.mortbay.log.StdErrLog登录到STDERR
...

让我们看看发生了什么

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)
首先,我的环境

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:\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)
码头7、8或9中不存在

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


考虑升级。

这个答案有什么意义吗@如果根目录(c:)包含start.jar?文件,您认为jetty应该从c:\SomeDir运行吗?。。我在回答中说明了这一点。如果你想检查的话。我花了一些时间在谷歌上搜索这个问题,并在jetty项目代码中搜索bug。我希望这个答案能为其他人节省时间。我很抱歉,但是你的答案没有实际解释你在做什么,你所显示的命令和输出列表也没有实际意义。先把你的问题说清楚。然后描述你答案中的步骤。您在上面所展示的和正在做的实际上毫无意义。您没有描述C:\TestJetty中的内容directory@JoakimErdfeltTestJetty目录包含jetty服务器。它通常是jetty服务器版本6.1.21,如所述,没有任何特殊性。正如你所看到的,我以平常的方式开始。问题的特点是,如果根目录包含文件start.jar,即使没有任何内容,jetty也不会使用NPE启动。无论操作系统是Windows还是Linux。这是一个奇怪的bug,我无法在bug跟踪器或google中搜索。此外,正如您所看到的,很难猜测其他目录中的某个文件可能是此异常的原因。除了“add-Djetty.home…”之外,我发现所有类似的问题都没有足够的答案。此外,我发现这个bug相当有趣。好的,再减去一个,我将删除问题)
org.mortbay.start.Main的@svaor第465行读取
File File=new File(System.getProperty(“jetty.home”)-Djetty.home=something
属性可以解决这个问题。您是否可以尝试使用
-DDEBUG
参数(没有
jetty.home
c:\start.jar
存在)再次启动jetty,这可能会告诉您为什么它是failing@Alex谢谢你对我的问题感兴趣。这个问题已经有答案了。我已经找到了原因:c:\start.jar是从磁盘c:中的任何其他目录启动jetty时出现NPE的原因。调试模式下的Jetty显示来自
start.config
Jetty.home=[./../home/Jetty//C:/Jetty/]
)的所有相关条件失败,因为第一个条件(
Jetty.home=.!exists$(Jetty.home)/start.jar
)失败。第一个条件失败,因为在第一次迭代时,
$(jetty.home)/start.jar
被识别为
/start.jar
,并指向当前磁盘根目录。Thnxs获取详细答案。我是说真的。不幸的是,我的回答不清楚。所以,+1代表你的一个;)
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)
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}