Spring/Maven Exception-ClassNotFoundException: SelectedAnnotationHandlerMapping

本文详细介绍了如何通过Maven管理器在本地repository中加入缺失的jar包,解决Spring MVC应用中出现的ClassNotFoundException问题,具体步骤包括导入依赖、部署到Tomcat并查找jar包、将jar包加入本地Maven依赖等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring/Maven Exception - java.lang.ClassNotFoundException: org.springplugins.web.SelectedAnnotationHandlerMapping  

附:由Maven管理的基于Spring架构的Web应用引起的Exception介绍如何将Maven 官方repository(mvnrepository.com)中缺少的jar包加入到本地Maven的repository中。

 

案例:研究Spring3.X MVC新特性

1. 在maven的pom配置文件中导入spring 的常规依赖和Spring的mvc依赖:

Spring的常规依赖:

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>${spring.version}</version>

</dependency>

            <dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

 

spring mvc依赖

dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-webmvc</artifactId>

      <version>${spring.version}</version>

      </dependency>

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-web</artifactId>

 <version>${spring.version}</version>

 </dependency>

 

由于还用到了JSP和JSTL标记库,并使用的是Tomcat6.0。导入其它相关包

 <!-- JSTL tag library -->

 <dependency>

        <groupId>taglibs</groupId>

        <artifactId>standard</artifactId>

        <version>1.1.2</version>

      </dependency>

      

      <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>jstl</artifactId>

        <version>1.1.2</version>

      </dependency>

      

      <!-- javax.servelt.HttpServletRequest -->

       <dependency>

         <groupId>javax.servlet</groupId>

         <artifactId>servlet-api</artifactId>

         <version>2.5</version>

 

       </dependency>

 

2.编码结束后,部署到Eclipse的Tomcat中。

在启动Tomcat6.0后,出现如下Exception:java.lang.ClassNotFoundException: org.springplugins.web.SelectedAnnotationHandlerMapping

然后由于项目是基于Maven的,就去maven的repository中(mvnrepository.com)中找这个缺少的类在哪个地方,找了半天,都找不到,包括去公司的nexus私服上,也找不到,后来在jarfinder中找到了这个jar,这个缺少的类是在springplugins.jar中。既然找到了这个类,要做的就是将这个类加到项目中,于是将这个jar加到本地的Maven Dependency中就是一个不错的选择。

 

如果想要将springplugins.jar加到Maven Dependency中,可以分为如下几步

1) mvn install:install-file  -Dfile=path-to-your-artifact-jar -DgroupId=your.groupId  -DartifactId=your-artifactId  -Dversion=your-version -Dpackaging=jar

如:mvn install:install-file  -Dfile=D:\springplugins.jar -DgroupId=com.wsheng -DartifactId=wsheng-springplugins  -Dversion=1.0 -Dpackaging=jar

(需要注意的是,根据-Dfile=D:\springplugins.jar要求在命令行执行该命令时,目录必须在D盘下:可以简单的理解成:Jar包在哪里,就在哪里执行该命令是一个很不错的选择)

 

执行后可以看到类似下面的信息:

[INFO] Installing c:\springplugins.jar to c:\maven-repo\swang\ebox\com\wsheng\wsheng-springplugins\1.0\wsheng-springplugins-1.0.jar

[INFO] Installing C:\Users\swang6\AppData\Local\Temp\mvninstall989911758677694999.pom to c:\maven-repo\swang\ebox\com\wsheng\wsheng-springplugins\1.0\wsheng-springplugins-1.0.pom

看到这信息和Build Successfully的信息后,证明jar包已经成功加到本地的repository中。

 

2). 可以去maven的本地repository中check该jar包是否存在。

 

3). 在maven的pom.xml中导入该jar包

<dependency>

        <groupId>com.wsheng</groupId>

  <artifactId>wsheng-springplugins</artifactId>

         <version>1.0</version>

         <type>jar</type>

 

 </dependency>

 

 

*************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.ai.embedding.TokenCountBatchingStrategy.<init>(TokenCountBatchingStrategy.java:108) The following method did not exist: 'void org.springframework.ai.tokenizer.JTokkitTokenCountEstimator.<init>(com.knuddels.jtokkit.api.EncodingType)' The calling method's class, org.springframework.ai.embedding.TokenCountBatchingStrategy, was loaded from the following location: jar:file:/C:/Users/z'q'z/.m2/repository/org/springframework/ai/spring-ai-commons/1.0.0/spring-ai-commons-1.0.0.jar!/org/springframework/ai/embedding/TokenCountBatchingStrategy.class The called method's class, org.springframework.ai.tokenizer.JTokkitTokenCountEstimator, is available from the following locations: jar:file:/C:/Users/z'q'z/.m2/repository/group/springframework/ai/spring-ai-core/1.1.0/spring-ai-core-1.1.0.jar!/org/springframework/ai/tokenizer/JTokkitTokenCountEstimator.class jar:file:/C:/Users/z'q'z/.m2/repository/org/springframework/ai/spring-ai-commons/1.0.0/spring-ai-commons-1.0.0.jar!/org/springframework/ai/tokenizer/JTokkitTokenCountEstimator.class The called method's class hierarchy was loaded from the following locations: org.springframework.ai.tokenizer.JTokkitTokenCountEstimator: file:/C:/Users/z'q'z/.m2/repository/group/springframework/ai/spring-ai-core/1.1.0/spring-ai-core-1.1.0.jar Action: Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.ai.embedding.TokenCountBatchingStrategy and org.springframework.ai.tokenizer.JTokkitTokenCountEstimator 这个问题在哪
07-13
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'distroFilterRegistration' defined in class path resource [com/alibaba/nacos/naming/web/NamingConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method 'distroFilterRegistration' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'distroFilter': Unsatisfied dependency expressed through field 'distroMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'distroMapper' defined in URL [jar:file:/opt/package/aitransfer/16K_GPU_A/aizt/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-naming-2.2.3.jar!/com/alibaba/nacos/naming/core/DistroMapper.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverMemberManager' defined in URL [jar:file:/opt/package/aitransfer/16K_GPU_A/aizt/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.2.3.jar!/com/alibaba/nacos/core/cluster/ServerMemberManager.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net 什么原因导致的报错
最新发布
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值