【问题标题】:Unable to load class [com.sun.jmx.mbeanserver.RepositorySupport] to check against the @HandlesTypes无法加载类 [com.sun.jmx.mbeanserver.RepositorySupport] 以检查 @HandlesTypes
【发布时间】:2011-12-09 23:11:14
【问题描述】:

迁移到tomcat后7.0.22 并安装 t7mp (tomcat 7 plugin from google code) 我在 ma​​ven 2 btw 上运行 尝试运行 mvn t7:run 时,出现以下异常:

WARNING: Unable to load class [com.sun.jmx.mbeanserver.MBeanInstantiatorImpl] to check against the @HandlesTypes annotation of one or more ServletContentInitializers.
java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
        at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2006)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1969)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1858)
        at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1826)
        at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1812)
        at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1306)
        at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1055)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:978)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1329)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:334)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at com.googlecode.t7mp.RunMojo.execute(RunMojo.java:52)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Oct 18, 2011 11:50:00 AM org.apache.catalina.startup.ContextConfig checkHandlesTypes

这是我对 t7mp 的配置:

<plugin>
                <groupId>com.googlecode.t7mp</groupId>
                <artifactId>maven-t7-plugin</artifactId>
                <version>0.9.6</version>
                <configuration>
                     <tomcatHttpPort>8081</tomcatHttpPort>
                     <tomcatShutdownPort>8008</tomcatShutdownPort>
                     <tomcatVersion>7.0.22</tomcatVersion>                                     
                </configuration>
</plugin>

所以有什么想法为什么我会收到这个错误,以及如何解决它?

更新:

我在尝试从 Eclipse 运行外部 tomcat7 时遇到了同样的错误。

【问题讨论】:

  • 您项目的运行时类路径严重混乱。检查项目的构建路径和/或 maven 配置。我无法发布答案,因为我不使用 Maven,也无法详细说明。查看your 问题历史和your "friend" 之一,我的印象是您(两个?)没有非常正确地理解Maven 概念。我建议在尝试实际项目之前先花更多时间学习 Maven。
  • @BalusC 你能至少指导我解决类路径的问题吗,我会尽力解决它。
  • 除此之外,您似乎在 web 应用程序的运行时类路径中有 Glassfish 特定的库。但是您运行的是 Tomcat 服务器,而不是 Glassfish 服务器!作为最后的手段,如果您现在完全不/不能掌握 Maven,您也可以完全摆脱它,这样您就可以在项目上工作,对类路径进行完全和清晰的 Eclipse 辅助控制。
  • 通过从 log4j 库中排除 jmxtools,jmxri &lt;dependency&gt; &lt;groupId&gt;log4j&lt;/groupId&gt; &lt;artifactId&gt;log4j&lt;/artifactId&gt; &lt;version&gt;1.2.15&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;com.sun.jdmk&lt;/groupId&gt; &lt;artifactId&gt;jmxtools&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;exclusion&gt; &lt;groupId&gt;com.sun.jmx&lt;/groupId&gt; &lt;artifactId&gt;jmxri&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt;,上述异常消失了
  • 这确实是一个 Glassfish 特定的库。

标签: jakarta-ee tomcat maven-2 maven tomcat7


【解决方案1】:

通过将 jmxtools,*jmxri* 从 log4j 库中排除

,上述异常消失了
<dependency> 
  <groupId>log4j</groupId> 
  <artifactId>log4j</artifactId> 
  <version>1.2.15</version> 
  <exclusions> 
    <exclusion> 
     <groupId>com.sun.jdmk</groupId> 
     <artifactId>jmxtools</artifactId> 
    </exclusion> 
     <exclusion> 
      <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
     </exclusion> 
  </exclusions> 
</dependency>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2020-10-28
    • 2018-05-24
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多