15哟沫、更新數(shù)據(jù)庫報錯
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed\n; SQL []; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed"
原因是沒有加 @Transaction 注解,加上就可以了
14锌介、MySQL 下劃線式字段名(如:u_name)與 Java POJO 駝峰式字段名(如:uName)自動映射
環(huán)境:Spring Boot + MySQL + MyBatis + *_mapper.xml 配置
在 application.yml
中增加配置 mybatis.configuration.map-underscore-to-camel-case=true
即可
13嗜诀、SpringMVC報錯:No converter found for return value of type: class java.util.ArrayList
原因:SpringMVC 默認(rèn)沒有提供對象轉(zhuǎn) json
解決:添加 fastjson 等轉(zhuǎn)換依賴,并在 <mvc:annotation-driven> 中配置
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
12孔祸、集成 MyBatis 報錯:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
大致是沒有找到對應(yīng)的 Mapper隆敢,原因 mapper.xml 的目錄名稱寫成了 com.demo.mapper 這種形式,實際上創(chuàng)建時應(yīng)該寫成 com/demo/mapper崔慧,本地是分級的目錄拂蝎,只是在 IDEA 工程中顯示為 com.demo.mapper
11、訪問 controller 中的方法 404
別忘了在 web.xml 中配置 SpringMVC 的前端控制器 DispatcherServlet
10惶室、Maven 的 tomcat7:run 插件温自,運行起來之后立即停止
原因:web 項目的打包方式?jīng)]有修改為 war
9玄货、IDEA package 下右鍵不能創(chuàng)建 java class
原因:package 名不符合規(guī)范,如帶有數(shù)字悼泌,則右鍵菜單中不會出現(xiàn)創(chuàng)建 java class 選項
8松捉、Spring Boot 項目啟動報錯
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.7.RELEASE.jar:5.1.7.RELEASE]
... 48 common frames omitted
Caused by: java.lang.NullPointerException: null
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_241]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_241]
at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:589) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:817) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1229) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1225) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90) ~[druid-1.1.10.jar:1.1.10]
at io.seata.rm.datasource.DataSourceProxy.init(DataSourceProxy.java:66) ~[seata-all-0.7.1.jar:0.7.1]
at io.seata.rm.datasource.DataSourceProxy.<init>(DataSourceProxy.java:61) ~[seata-all-0.7.1.jar:0.7.1]
at io.seata.rm.datasource.DataSourceProxy.<init>(DataSourceProxy.java:50) ~[seata-all-0.7.1.jar:0.7.1]
at com.changgou.goods.config.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:26) ~[classes/:na]
at com.changgou.goods.config.DataSourceConfiguration$$EnhancerBySpringCGLIB$$38399d80.CGLIB$dataSource$0(<generated>) ~[classes/:na]
at com.changgou.goods.config.DataSourceConfiguration$$EnhancerBySpringCGLIB$$38399d80$$FastClassBySpringCGLIB$$4d5ff5c1.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.7.RELEASE.jar:5.1.7.RELEASE]
at com.changgou.goods.config.DataSourceConfiguration$$EnhancerBySpringCGLIB$$38399d80.dataSource(<generated>) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_241]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.7.RELEASE.jar:5.1.7.RELEASE]
... 49 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:50223', transport: 'socket'
Process finished with exit code 1
原因為配置類的前綴少了druid,修改為
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DruidDataSource ds0() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
參考 http://www.classinstance.cn/detail/111.html
7馆里、訪問微服務(wù)報錯:java.net.SocketException: Can't connect to SOCKS proxy:Connection refused (Connection refused)
原因:應(yīng)該是開啟了代理的緣故惩坑,關(guān)閉代理、重啟服務(wù)后恢復(fù)正常訪問也拜。
6以舒、報錯:java.lang.ClassNotFoundException
詭異的問題:Web 項目,在包 abc.def 下定義一個類 AClass慢哈,運行正常蔓钟,然后將包改為 com.abc.def ,類名不變卵贱,全限定名為 com.abc.def.AClass滥沫,編譯沒有問題,但是運行時使用到 AClass 時就會報錯誤 java.lang.ClassNotFoundException: abc.def.AClass. clean 清除緩存也沒有作用键俱。后面查看錯誤日志兰绣,調(diào)用棧里面有 redis,原來是因為之前有將 abc.def.AClass 數(shù)據(jù)存入 redis编振,現(xiàn)在再訪問 redis 中的這些數(shù)據(jù)缀辩,因為類已經(jīng)不存在了,才會報錯踪央。解決辦法為將 redis 中的數(shù)據(jù)清除臀玄,重新存入和訪問。
5畅蹂、Spring Cloud 微服務(wù)之間通過 Feign 調(diào)用報錯:
feign.FeignException: status 405 reading AddressFeign#list(String)
at feign.FeignException.errorStatus(FeignException.java:78) ~[feign-core-10.1.0.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93) ~[feign-core-10.1.0.jar:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:149) ~[feign-core-10.1.0.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78) ~[feign-core-10.1.0.jar:na]
.......
其中 Feign 接口定義如下:
@GetMapping("/list")
public Result<List<Address>> list(String username);
以上寫法為錯誤寫法健无,以下是正確寫法(增加 @RequestParam("username"))
@GetMapping("/list")
public Result<List<Address>> list(@RequestParam("username") String username);
原因:Stack Overflow 上的解釋
By default, any parameter to a feign method is treated as the body, so your checkFormat() method will send a post because it has a body (a get cannot).
4、Spring Boot 工程中液斜,src/resources/templates 目錄下的 .html 文件不能直接通過 url 訪問累贤,而需要通過 controller 路徑訪問。
注意:工程必須添加 thymeleaf 依賴(spring-boot-starter-thymeleaf)少漆,否則即使通過 controller 也無法訪問臼膏!
3、Maven 工程編譯遇到以下問題:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project spring_security_demo: Fatal error compiling: 無效的目標(biāo)發(fā)行版: 13 -> [Help 1]
大致是 java 版本不對的問題检疫,本機 java 版本為 1.8讶请,但是設(shè)置了所有能設(shè)置的 java 版本為 1.8 都沒用(包括工程設(shè)置及 IDEA 設(shè)置)祷嘶,仍然報這個錯屎媳。后面改了 .pom 文件夺溢,添加插件,顯式指定 Maven 所使用的 java 編譯器版本號為 1.8烛谊,才解決問了問題风响。
<plugins>
<!-- java編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
2、Maven web 項目中運行時找不到 pom.xml 引入的框架中的類
如報錯:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
原因是沒有把導(dǎo)入的框架放到 WEB-INF 下的 lib 目錄丹禀。
解決方法:打開 Project Structure状勤,選中 Artifacts,選中項目/模塊名双泪,鼠標(biāo)右鍵點擊右側(cè) Available Elements 下的模塊名持搜,在彈出框中點擊 Put into Output Root,這樣左側(cè) WEB-INF 目錄下就有了 lib 目錄焙矛,且包含導(dǎo)入的第三方框架 jar 包葫盼。
參考:
- https://www.cnblogs.com/binye-typing/p/6295728.html
-
https://blog.csdn.net/IT_TIfarmer/article/details/84306014
1)全局修改,$MAVEN_HOME/conf/setting.xml,
2)僅針對當(dāng)前用戶修改村斟,~/.m2/setting.xml
取決于 maven 配置使用哪個 xml 文件贫导。
以 IntelliJ IDEA 為例
image.png
1、解決:[ERROR] 不再支持源選項 5蟆盹。請使用 7 或更高版本孩灯。
[ERROR] 不再支持目標(biāo)選項 5。請使用 7 或更高版本逾滥。
第一種解決方案:修改工程的 pom.xml 文件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
其中 13 代表本地 java 版本
第二種方案:修改 Maven 的配置文件 setting.xml峰档。
在 <profiles> 中添加如下內(nèi)容
<profile>
<id>jdk-13</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>13</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
</profile>