You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-dev@geronimo.apache.org by "Dain Sundstrom (JIRA)" <ji...@apache.org> on 2008/02/29 00:27:52 UTC
[jira] Assigned: (XBEAN-71) qdox dies because it cannot resolve
javax/servlet/ServletContext
[ https://issues.apache.org/jira/browse/XBEAN-71?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dain Sundstrom reassigned XBEAN-71:
-----------------------------------
Assignee: Dain Sundstrom
> qdox dies because it cannot resolve javax/servlet/ServletContext
> ----------------------------------------------------------------
>
> Key: XBEAN-71
> URL: https://issues.apache.org/jira/browse/XBEAN-71
> Project: XBean
> Issue Type: Bug
> Components: maven-plugin
> Affects Versions: 2.7
> Reporter: Kohsuke Kawaguchi
> Assignee: Dain Sundstrom
>
> When one of my classes implement Spring's ServletContextAware interface, qdox used by XBean dies. The call stack below:
> java.lang.NoClassDefFoundError: javax/servlet/ServletContext
> at java.lang.Class.getDeclaredMethods0(Native Method)
> at java.lang.Class.privateGetDeclaredMethods(Class.java:2365)
> at java.lang.Class.privateGetPublicMethods(Class.java:2488)
> at java.lang.Class.getMethods(Class.java:1406)
> at com.thoughtworks.qdox.JavaDocBuilder.createBinaryClass(JavaDocBuilder.java:189)
> at com.thoughtworks.qdox.JavaDocBuilder.getClassByName(JavaDocBuilder.java:119)
> at com.thoughtworks.qdox.model.ClassLibrary.getClassByName(ClassLibrary.java:37)
> at com.thoughtworks.qdox.model.Type.getJavaClass(Type.java:98)
> at com.thoughtworks.qdox.model.JavaClass.getImplementedInterfaces(JavaClass.java:91)
> at org.apache.xbean.spring.generator.QdoxMappingLoader.loadElement(QdoxMappingLoader.java:270)
> at org.apache.xbean.spring.generator.QdoxMappingLoader.loadElements(QdoxMappingLoader.java:153)
> at org.apache.xbean.spring.generator.QdoxMappingLoader.loadNamespaces(QdoxMappingLoader.java:107)
> at org.apache.xbean.spring.generator.QdoxMappingLoader.loadNamespaces(QdoxMappingLoader.java:101)
> at org.apache.xbean.maven.XBeanMojo.execute(XBeanMojo.java:153)
> at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
> at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:256)
> The root cause of this is in qdox, and for that I filed http://jira.codehaus.org/browse/QDOX-110
> The reason this problem occurs is that maven-xbean-plugin depends on spring (via xbean-spring), so when qdox sees references to spring classes in my sources, it ends up loading that class in maven-xbean-plugin's classloader as java.lang.Class object (in the above case that was ServletContextAware.)
> Yet the dependency specified in the xbean-spring module is
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring</artifactId>
> </dependency>
> and this uber spring jar's POM doesn't declare any other dependency. So while introspecting methods and fields on ServletContextAware, it tries to load ServletContext, and it dies there.
> This bug in qdox is particularly bad with maven-xbean-plugin because in maven-xbean-plugin, the sources that are being compiled are meant to be used with Spring. So there's a rather big chance of them using some Spring interfaces.
> It looks like the workaround is to use more recent versions of spring, such as 1.2.8, whose POM includes all the additional dependencies.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.