2016-03-16 5 views
0

Вот код в вопросе:сервер Спарк Java NoSuchMethodError

post("user/login ", (request, response) -> { 
      return "hello"; 
}); 

А вот ошибка, что происходит сразу после возвращения заявления:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getHeaders(Ljava/lang/String;)Ljava/util/Collection; 
    at spark.utils.GzipUtils.checkAndWrap(GzipUtils.java:64) 
    at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:251) 
    at spark.webserver.JettyHandler.doHandle(JettyHandler.java:61) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
    at org.eclipse.jetty.server.Server.handle(Server.java:517) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) 
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245) 
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) 
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) 
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 
    at java.lang.Thread.run(Thread.java:745) 

Из того, что я прочитал, есть некоторые версии проблема в моих банках - вот банки я использую:

jar versions

Я использую maven и следую the directions found in Spark's documentation. Как я могу пройти мимо этой ошибки?

+1

У меня есть пара идей на голове. Запускаете ли вы сервер приложений, поддерживающий servet api 3.1? У вас есть только один сервлет-api в classpath? – chalimartines

+0

Я распечатал путь к классу: ...../lib/javax.servlet-api-3.1.0.jar ...../idea-IU-143.1821.5% 20 (2)/lib/servlet -api.jar –

+0

@chalimartines ты был прав! Я добавил ответ на свой вопрос. Спасибо, это потрясающе. –

ответ

3

Найденный! Я распечатал все на пути к классам. Вот некоторые из записей:

...../lib/javax.servlet-api-3.1.0.jar 
...../idea-IU-143.1821.5%20(2)/lib/servlet-api.jar 

Оказывается Intellij загружал что-то я не знаю, о (возможно, я заставил это сделать, не уверен), что противоречит баночки мне нужно. Я вошел в этот каталог и переименовал банку Intellij. Это, по-видимому, вызывает некоторые проблемы в Intellij (он сообщил о некоторой внутренней ошибке IDE), но мой код работает сейчас.

Интересно, почему банки Intellij когда-либо имели какое-либо отношение к моему проекту ... yikes.

+0

Какой у вас проект SDK? Возможно, вы установили intellij в качестве SDK. Это может вызвать проблемы. – BevynQ

0

Я пошел в Файл> Структура проекта> Библиотеки, а затем удалил javax.servlet-api 2.5 (сохранено 3.1.0).

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