jetty NPE位于org.mortbay.start.Main.init(Main.java:465)
Jetty 6.1.21启动时出现奇怪的异常: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
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}