嵌入式Jetty中的Wicket应用程序导致UnsupportedClassVersionError

时间:2010-05-05 03:45:39

标签: jetty wicket java

我尝试使用以下代码在嵌入式Jetty中运行Wicket应用程序:

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中时,堆栈跟踪没有用处。

任何想法都可能出错? 如何找到导致此类的类?

谢谢, Ondra

1 个答案:

答案 0 :(得分:0)

离开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