日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于$'\r': command not found错误的一点体会

發(fā)布時(shí)間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于$'\r': command not found错误的一点体会 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天運(yùn)行一個(gè)其他組開發(fā)的jar包,這個(gè)jar包由于運(yùn)行參數(shù)是通過命令行的方式輸入的,所以需要運(yùn)行一個(gè)shell腳本來啟動(dòng)。
啟動(dòng)腳本類似這樣:

#!/bin/bash jdbc_driverClassName=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://XX/XX?characterEncoding=UTF-8 jdbc_username=XX jdbc_password=XX java -jar xx.jar ${jdbc_driverClassName} ${jdbc_url} ${jdbc_username} ${jdbc_password}&

但是啟動(dòng)的時(shí)候一直報(bào)java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,錯(cuò)誤在Class.forName(jdbcDriver)這行。

  • 最開始懷疑是MySQL驅(qū)動(dòng)的問題,首先確認(rèn)了classpath肯定正確,包括嘗試把mysql-connector-java-5.0.2.jar復(fù)制到j(luò)dk的lib/ext/下,還是不行。
  • 嘗試移除Class.forName這行代碼,因?yàn)閖dbc4(JDK1.6)之后的版本是可以不寫Class.forName的。結(jié)果開始報(bào)下一行的數(shù)據(jù)庫(kù)連接用戶名密碼錯(cuò)誤,但是這個(gè)用戶名密碼是沒問題的,使用客戶端可以正常連上。
  • 懷疑是啟動(dòng)腳本的問題,嘗試寫死配置參數(shù)(不通過命令行指定),結(jié)果。。居然可以了。。由此推斷是shell腳本什么地方寫錯(cuò)了。
  • 反復(fù)檢查shell腳本,沒看出什么問題,這才留意到程序啟動(dòng)的時(shí)候有報(bào)一個(gè)./start.sh: line 15: $'\r': command not found,由于后面的錯(cuò)誤太多了,被刷屏了所以之前沒有注意到。大概猜到是換行符的問題,不過因?yàn)檫@個(gè)可以導(dǎo)致數(shù)據(jù)庫(kù)連接出錯(cuò)嗎?在第一步的時(shí)候,我已經(jīng)有打印輸入的參數(shù)了。
  • 打開vi使用set ff=unix解決這個(gè)換行符的問題后,重新啟動(dòng),已經(jīng)可以跑起來了。但是還是蠻疑惑的,一個(gè)換行符有這么大作用嗎?
  • 使用getBytes()方法打印入?yún)⒌腷yte數(shù)組,結(jié)果發(fā)現(xiàn)每個(gè)參數(shù)的后面都跟上了一個(gè)ASCII碼為13的這個(gè)字符,也就是\r回車符。我們知道win下的換行是回車符+換行符,也就是\r\n,而unix下是換行符\n。linux下不識(shí)別\r為回車符,所以導(dǎo)致每行的配置都多了個(gè)\r。并且因?yàn)檫@個(gè)是控制字符,所以在輸出參數(shù)的時(shí)候不會(huì)打印出來,只有使用getBytes()才能看到。
  • 至此,問題已經(jīng)明朗。我覺得一個(gè)教訓(xùn)就是,出現(xiàn)錯(cuò)誤的時(shí)候,一定要先去檢查第一行的錯(cuò)誤,任何比較微小的問題(比如這種回車符),都可能引起大的問題,而且通過后面的錯(cuò)誤信息還不好定位。另外一個(gè)就是在win下修改shell腳本的時(shí)候,要特別警惕,注意文件的格式。

    總結(jié)

    以上是生活随笔為你收集整理的关于$'\r': command not found错误的一点体会的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。