Кто-нибудь видел, что Jetty успешно инициализируется под Linux, но выдает исключения под Windows? - PullRequest
0 голосов
/ 14 апреля 2010

У меня одно веб-приложение отлично работает под 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 (defaultsDescriptor); .

Но я не понимаю. Почему это работает на Linux, но не на Windows?

1 Ответ

0 голосов
/ 15 апреля 2010

Оказывается. Единственное, что вам нужно сделать, это установить для экстракта значение «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>
...