Java 服務(wù)端開發(fā)筆記

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 包葫盼。

web_add_lib.jpg

參考:

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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寨昙,隨后出現(xiàn)的幾起案子面哥,更是在濱河造成了極大的恐慌,老刑警劉巖毅待,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚卫,死亡現(xiàn)場離奇詭異,居然都是意外死亡尸红,警方通過查閱死者的電腦和手機吱涉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來外里,“玉大人怎爵,你說我怎么就攤上這事盅蝗。” “怎么了芙委?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么皮壁? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮畏腕,結(jié)果婚禮上描馅,老公的妹妹穿的比我還像新娘而线。我一直安慰自己膀篮,他們只是感情好誓竿,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燎潮,像睡著了一般确封。 火紅的嫁衣襯著肌膚如雪爪喘。 梳的紋絲不亂的頭發(fā)上腥放,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼匹耕。 笑死驶赏,一個胖子當(dāng)著我的面吹牛煤傍,可吹牛的內(nèi)容都是我干的嘱蛋。 我是一名探鬼主播洒敏,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铣卡!你這毒婦竟也來了煮落?” 一聲冷哼從身側(cè)響起蝉仇,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鞭呕,沒想到半個月后宛官,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腋么,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡费变,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞧掺。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凡傅,靈堂內(nèi)的尸體忽然破棺而出辟狈,到底是詐尸還是另有隱情,我是刑警寧澤夏跷,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布哼转,位于F島的核電站,受9級特大地震影響槽华,放射性物質(zhì)發(fā)生泄漏壹蔓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一猫态、第九天 我趴在偏房一處隱蔽的房頂上張望佣蓉。 院中可真熱鬧披摄,春花似錦、人聲如沸勇凭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虾标。三九已至寓盗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間璧函,已是汗流浹背傀蚌。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柳譬,地道東北人喳张。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓续镇,卻偏偏與公主長得像美澳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摸航,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355