有谁见过jetty在linux下初始化成功但在windows下抛出异常吗?

发布于 2024-08-28 15:53:05 字数 1469 浏览 5 评论 0原文

我有一个网络应用程序可以在带有 jetty-6.1.22 的 Linux 下完美运行。然而,当我尝试在Windows下运行它时,它在初始化时抛出异常:

java.lang.IllegalArgumentException: name
        at sun.misc.URLClassPath$Loader.findResource(Unknown Source)
        at sun.misc.URLClassPath.findResource(Unknown Source)
        at java.net.URLClassLoader$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(Unknown Source)
        at org.mortbay.jetty.webapp.WebAppClassLoader.getResource(WebAppClassLoader.java:271)
        at org.mortbay.resource.Resource.newSystemResource(Resource.java:203)
        at org.mortbay.jetty.webapp.WebXmlConfiguration.configureDefaults(WebXmlConfiguration.java:159)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1230)

我检查了WebAppClassLoader.java的源代码,它看起来像这样:

String defaultsDescriptor=getWebAppContext().getDefaultsDescriptor();
if(defaultsDescriptor!=null&&defaultsDescriptor.length()>0)
{
    Resource dftResource=Resource.newSystemResource(defaultsDescriptor);
    if(dftResource==null)
  dftResource=Resource.newResource(defaultsDescriptor);
    configure(dftResource.getURL().toString());
    _defaultWelcomeFileList=_welcomeFiles!=null;
}

异常发生在这一行: Resource.dftResource=Resource.newSystemResource(defaultsDescriptor);

但我不明白。为什么在Linux下可以,在windows下不行呢?

I have one web app works perfectly under linux with jetty-6.1.22. However, when I tried to run it under windows, it throws an exception right at the initialization:

java.lang.IllegalArgumentException: name
        at sun.misc.URLClassPath$Loader.findResource(Unknown Source)
        at sun.misc.URLClassPath.findResource(Unknown Source)
        at java.net.URLClassLoader$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(Unknown Source)
        at org.mortbay.jetty.webapp.WebAppClassLoader.getResource(WebAppClassLoader.java:271)
        at org.mortbay.resource.Resource.newSystemResource(Resource.java:203)
        at org.mortbay.jetty.webapp.WebXmlConfiguration.configureDefaults(WebXmlConfiguration.java:159)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1230)

I checked into the source code of WebAppClassLoader.java, it looks like this:

String defaultsDescriptor=getWebAppContext().getDefaultsDescriptor();
if(defaultsDescriptor!=null&&defaultsDescriptor.length()>0)
{
    Resource dftResource=Resource.newSystemResource(defaultsDescriptor);
    if(dftResource==null)
  dftResource=Resource.newResource(defaultsDescriptor);
    configure(dftResource.getURL().toString());
    _defaultWelcomeFileList=_welcomeFiles!=null;
}

The exception happens on this line: Resource.dftResource=Resource.newSystemResource(defaultsDescriptor);.

But I do not understand. How come it works on Linux but not on windows?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧情勿念 2024-09-04 15:53:05

事实证明。您唯一要做的就是将提取设置为“true”。

<Call name="addLifeCycle">
  <Arg>
    <New class="org.mortbay.jetty.deployer.WebAppDeployer">
      ...
      <Set name="extract">true</Set> <-- here
      ...
    </New>
  </Arg>
</Call>

或者

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
   ...
   <Set name="extractWAR">true</Set> <-- here
   ...
</Configure>

It turns out. The only thing you have to do is to set the extract to "true".

<Call name="addLifeCycle">
  <Arg>
    <New class="org.mortbay.jetty.deployer.WebAppDeployer">
      ...
      <Set name="extract">true</Set> <-- here
      ...
    </New>
  </Arg>
</Call>

or

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
   ...
   <Set name="extractWAR">true</Set> <-- here
   ...
</Configure>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文