Приложение Wicket во встроенной Jetty вызывает UnsupportedClassVersionError - PullRequest
0 голосов
/ 05 мая 2010

Я пытался запустить приложение Wicket во встроенной Jetty, используя этот код:

public static void main( String[] args ){

  Server server = new Server(8080);
  Context root = new Context( server, "/", Context.SESSIONS );


  FilterHolder filterHolder = new FilterHolder( new WicketFilter() );
  filterHolder.setInitParameter("applicationClassName", cz.dw.test.WicketApplication.class.getName() );
  root.addFilter( filterHolder, "/*" , Handler.ALL );

  try {
   server.start();
  } catch (Exception ex) {
   ex.printStackTrace();
  }

 }

Но я получил java.lang.UnsupportedClassVersionError: Bad version number in .class file.

Переключение версии целевого класса для моего приложения (1.6 -> 1.5) не помогло.

Я использую Sun JDK 1.6.0_17, Калитка 1.4.8, Причал 6.1.24 .

Когда я запускаю приложение в обычном режиме (развертывание на Jetty или mvn jetty:run), оно отлично работает.

Я попытался отладить, но у классов JRE нет данных отладки. Трассировка стека бесполезна, как это происходит при загрузке классов в JVM.

Есть идеи, что может быть не так? Как я могу найти, какой класс вызывает это?

Спасибо, Ондра

1 Ответ

0 голосов
/ 05 мая 2010

После выхода из IDE я обнаружил, что в pom.xml версия все еще была 1.6 - поэтому IDE не меняла ее; Тем не менее, я удивляюсь, почему это происходило, когда я положительно использовал JDK 1.6. Возможно, плагин Jetty изменяет конфигурацию загрузки классов?

Обновление: Так что проблема где-то между плагином NetBeans, Maven и Maven. Каким-то образом плагин exec попадает в среду, в которой java разрешен как /usr/bin/java, который был Sun JDK 1.5.0 .

Я сообщаю об этом как об ошибке NetBeans. http://netbeans.org/bugzilla/show_bug.cgi?id=185547

...