2013-01-21 2 views
5

Я хочу развернуть службу на 2 сервера. Я успешно работаю на одном сервере, но не сработал на другом. На самом деле, я стараюсь изо всех сил сделать их среду такой же. Журнал ошибок выглядит следующим образом:java.lang.NoSuchFieldError: IS_SECURITY_ENABLED

2013-01-21 22:08:18.178:WARN:oejuc.AbstractLifeCycle:FAILED jsp: java.lang.NoSuchFieldError: IS_SECURITY_ENABLED 
java.lang.NoSuchFieldError: IS_SECURITY_ENABLED 
    at org.apache.jasper.compiler.JspRuntimeContext.<init>(JspRuntimeContext.java:197) 
    at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:150) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:776) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:258) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1213) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36) 
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183) 
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:491) 
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:138) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:142) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:53) 
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:604) 
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:535) 
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:398) 
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:332) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:118) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:552) 
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:227) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:58) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:53) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:91) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:263) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) 
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1215) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1138) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.eclipse.jetty.start.Main.invokeMain(Main.java:457) 
    at org.eclipse.jetty.start.Main.start(Main.java:602) 
    at org.eclipse.jetty.start.Main.main(Main.java:82) 

Спасибо за любую помощь.

ответ

7
java.lang.NoSuchFieldError: IS_SECURITY_ENABLED 

Это часть одного из внутренних классов компилятора Jasper JSP. Эта ошибка предполагает, что вы (или Maven) по какой-то причине включали JAR-файлы Jasper JSP в папку webapp /WEB-INF/lib, в то время как эти файлы JAR должны быть уже предоставлены целевым контейнером (который является Jetty в вашем случае).

Этот способ будет работать, только если ваш webapp содержит JAR-файлы Jasper от точно той же версии, что и целевой контейнер. Но, в конце концов, это неправильный подход. Эти JAR-файлы Jasper не принадлежат. Они должны быть уже, предоставленные целевым контейнером. Вам нужно избавиться от них в файле webapp /WEB-INF/lib.

Я не герой Maven, но, по сути, вам нужно сказать, чтобы он не включал JAR-файлы Jasper в папку /WEB-INF/lib встроенной WAR. Вы можете сделать это, установив dependency scope на provided.

+0

Здравствуйте @BalusC, спасибо за ваш ответ. Фактически, я копирую весь проект с сервера, который обычно запускается на новый сервер, проблема все еще существует на новой. BTW, 2 сервера получают одну и ту же версию java. [java version "1.6.0_25", Java (TM) SE Runtime Environment (build 1.6.0_25-b06), Java HotSpot (TM) 64-разрядная серверная VM (сборка 20.0-b11, смешанный режим)] –

+0

Как уже было сказано, очистка ваш путь к классу runtime, чтобы избавиться от JAR-файла Jar Jasper JSP. Посмотрите папку '/ WEB-INF/lib' встроенного файла WAR. Он не должен содержать файлы JAR, специфичные для контейнера. – BalusC

+0

Спасибо, проблема решена. Я удаляю Jasper связанные банки. –

Смежные вопросы