框架学习遇到的问题及解决方案

框架学习遇到的问题及解决方案

  • 问题1:No mapping for GET /admin/
    • 解决方法:
  • 问题2:Component name "login" should always be multi-word vue/multi-word-component-names
    • 解决方法:
  • 问题3:通配符的匹配很全面, 但无法找到元素 context:component-scan 的声明。
    • 解决方法:
  • 问题4:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    • 解决方法:
  • 问题5:java版本不匹配问题
    • 解决方法:
  • 问题6:关于:com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor
    • 解决方法:
  • 问题7:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效
    • 解决方法:
  • 问题8:java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
    • 解决方法
  • 问题9:idea怎么设置Tomcat访问磁盘文件
    • 解决方法:
  • 问题10:类com.chen.servlet.CookieDemo01不是Servlet
    • 解决方法
      • 方法一:
      • 方法二:
  • idea的 maven 项目导不进依赖的问题
    • 解决方法:
  • elasticsearch 闪退问题
    • 解决方法:
  • 引发了load()异常
    • 寻找问题
    • 解决方法
  • 记一次用 fastjson JSON.toJSONString(request) 异常问题
    • 问题
    • 解决方法

我们在学习的过程中,都会遇到各种各样的问题,所以为了能够帮助到和我一样在学习的时候有遇到同样问题的朋友,我把我遇到的问题及其解决方法都记录了起来。

问题1:No mapping for GET /admin/

解决方法:

遇到这个问题,我们就是把已经配置好的Tomcat删了,重新编译项目,再重新配置Tomcat。在部署的时候应用程序上下文就写一个 ‘/’ 如下图所示↓:
框架学习遇到的问题及解决方案_第1张图片

问题2:Component name “login” should always be multi-word vue/multi-word-component-names

就是组件名不能为一个单词的问题

解决方法:

方法一:可以把组件名写成驼峰命名,如把login 改成 loginIn

方法二:可以在vue.config.js中加入lineOnSave:false

问题3:通配符的匹配很全面, 但无法找到元素 context:component-scan 的声明。

就是导入的声明不全,导入的声明需要下面这三条

解决方法:

xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd

问题4:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

dispatcherServlet找不到的问题

解决方法:

需要对项目依赖添加lib目录,如下图:
框架学习遇到的问题及解决方案_第2张图片

问题5:java版本不匹配问题

java:警告:源发行版 11 需要目标发行版 11
在这里插入图片描述
java : 无效的目标发行版 :11
在这里插入图片描述

解决方法:

看下图:
框架学习遇到的问题及解决方案_第3张图片
框架学习遇到的问题及解决方案_第4张图片
框架学习遇到的问题及解决方案_第5张图片

问题6:关于:com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor

那些大佬说是因为依赖5.0版本之后,interceptor中的引用不在是PageHelper了,而是改为PageInterceptor。而在properties的地方,4.0版本之后可以不设置相关参数。

解决方法:

导入依赖

<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>5.3.0version>
dependency>

在配置中配置

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
plugins>

问题7:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效

这个问题的原因就是你的项目有中文,但是你的项目不是utf-8的字符编码。

解决方法:

如下图:
框架学习遇到的问题及解决方案_第6张图片

问题8:java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener

大佬们说org.springframework.web.util.Log4jConfigListener这个类在spring5。0及以上版本已经废弃删除,如果想使用这个类,spring版本需要降低。

但我们可以不用降低spring的版本,我们提高依赖的版本!

解决方法

导入依赖:
版本自选


<dependency>
    <groupId>org.apache.logging.log4jgroupId>
    <artifactId>log4j-coreartifactId>
    <version>2.17.2version>
dependency>

<dependency>
    <groupId>org.apache.logging.log4jgroupId>
    <artifactId>log4j-apiartifactId>
    <version>2.17.2version>
dependency>

<dependency>
    <groupId>org.apache.logging.log4jgroupId>
    <artifactId>log4j-webartifactId>
    <version>2.17.2version>
dependency>

修改web.xml配置

<listener>
    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListenerlistener-class>
listener>

问题9:idea怎么设置Tomcat访问磁盘文件

我们在使用做项目的时候可能会涉及到上传或者访问本地文件,所以我们要设置Tomcat,给Tomcat设置要访问的文件路径

解决方法:

如下图:
框架学习遇到的问题及解决方案_第7张图片

问题10:类com.chen.servlet.CookieDemo01不是Servlet

框架学习遇到的问题及解决方案_第8张图片
当你出现这个问题的时候,检查一下你的Tomcat的版本是不是10的。

解决方法

这个问题可以用两个方法来解决:

方法一:

修改Tomcat的版本。 个人推荐使用Tomcat 9,这是Tomcat 9 的下载路径:
https://tomcat.apache.org/download-90.cgi

方法二:

修改导入的依赖 如 ↓




<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>4.0.1version>
    <scope>providedscope>
dependency>



<dependency>
    <groupId>org.apache.tomcatgroupId>
    <artifactId>tomcat-servlet-apiartifactId>
    <version>10.1.0-M14version>
dependency>

然后这里还有关键的一步:
Java类中导入到 javax 包要手动改为 jakarta

// 10 之前的导包
import javax .servlet.http.HttpServlet;
//10 之后的导包
import jakarta.servlet.http.HttpServlet;

这里给大家一个放个maven仓库的地址:
https://mvnrepository.com/

idea的 maven 项目导不进依赖的问题

检查idea的版本,检查自己下载 maven 仓库的版本。

这个问题是我室友在学习的时候遇到的,
他的idea版本是2020版,maven版本是3.8
然后我去查了一下,那些大佬说这两个版本不兼容,所以我们降低maven的版本。

解决方法:

把maven版本降到3.6,这个问题就解决了。
这里给大家一个下载maven所有版本的地址
https://downloads.apache.org/maven/maven-3/

框架学习遇到的问题及解决方案_第9张图片

elasticsearch 闪退问题

我的电脑版本是win11,然后我在双击elasticsearch.bat之后小黑窗出现闪退问题。这个时候我们通过cmd看一下是什么问题导致的。操作如下:
1、进入elasticsearch安装目录下的bin文件夹;
然后 dir ,可以看到elasticsearch.bat,
接着执行elasticsearch.bat
这样就可以看到报错原因了

Unrecognized VM option 'UseConcMarkSweepGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

框架学习遇到的问题及解决方案_第10张图片

解决方法:

打开elasticsearch安装目录下conf文件夹中的jvm.options文件 ,将里面的内容修改一下即可;
框架学习遇到的问题及解决方案_第11张图片

## GC configuration
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
改成如下即可
## GC configuration
#-XX:+UseConcMarkSweepGC
#-XX:CMSInitiatingOccupancyFraction=75
#-XX:+UseCMSInitiatingOccupancyOnly

引发了load()异常

org.apache.catalina.core.StandardContext.loadOnStartup web应用程序[/aiamediamgr]中的Servlet[springmvc]引发了load()异常 java.lang.ClassNotFoundException: com.yq.web.aiamediamgr.common.context.SpringContextHolder at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)

寻找问题

1、找到项目路径 的 .classpath ,这个文件
框架学习遇到的问题及解决方案_第12张图片
2、用记事本打开
框架学习遇到的问题及解决方案_第13张图片
打开之后看到我红框里面那一行,如果和我的一样,就可以用到我的解决方法。

解决方法

将上图改成下图这样即可!

path="WebContent/WEB-INF/classes"

框架学习遇到的问题及解决方案_第14张图片

记一次用 fastjson JSON.toJSONString(request) 异常问题

问题

我想将HttpServletRequest 的参数打印出来,但是我用了阿里的toJSONString打印出来,实例如下↓,报了一个异常!

HttpServletRequest request = (HttpServletRequest) servletRequest;
logger.info("request="+JSON.toJSONString(request));

解决方法

这个问题的原因就是:报错的原因是 Request 对象中的一些属性不能被转换为 JSON 格式的字符串。
解决方法就是不用JSON.toJSONString(request) 打印出来!
如果你要真的要将 Request 对象转换为 JSON 字符串,建议自建 Java 对象,并将 Request 中需转换的部分复制到自建对象上,然后再将自建对象转换为 JSON 字符串。


这篇文章不断更新,毕竟学无止境,后面可能还有很多问题等着我,我会继续把问题和解决方法写在这里。
我目前遇到的问题和我的把问题解决的方法都写在这了,如果您觉得有什么更好的解决方法,或者我的解决方法不起作用,欢迎评论区留言讨论。

你可能感兴趣的:(技巧,java,tomcat,maven)