代码之家  ›  专栏  ›  技术社区  ›  Winston Chen

有人看到过Jetty在Linux下成功初始化,但在Windows下抛出异常吗?

  •  0
  • Winston Chen  · 技术社区  · 15 年前

    我有一个Web应用程序可以在Linux和Jetty-6.1.22下完美运行。但是,当我尝试在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(默认描述器); .

    但我不明白。为什么它能在Linux上工作而不是在Windows上?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Winston Chen    15 年前

    原来是这样。你唯一要做的就是将摘录设置为“真”。

    <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>