Приложение Wicket во встроенной Jetty вызывает ошибку UnsupportedClassVersionError

Я попытался запустить приложение 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, Wicket 1.4.8, Jetty 6.1.24.

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

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

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

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


person Ondra Žižka    schedule 05.05.2010    source источник


Ответы (1)


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

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

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

person Ondra Žižka    schedule 05.05.2010