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

2023-11-11

今天运行一个其他组开发的jar包,这个jar包由于运行参数是通过命令行的方式输入的,所以需要运行一个shell脚本来启动。
启动脚本类似这样:

#!/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}&

但是启动的时候一直报java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,错误在Class.forName(jdbcDriver)这行。

  1. 最开始怀疑是MySQL驱动的问题,首先确认了classpath肯定正确,包括尝试把mysql-connector-java-5.0.2.jar复制到jdk的lib/ext/下,还是不行。
  2. 尝试移除Class.forName这行代码,因为jdbc4(JDK1.6)之后的版本是可以不写Class.forName的。结果开始报下一行的数据库连接用户名密码错误,但是这个用户名密码是没问题的,使用客户端可以正常连上。
  3. 怀疑是启动脚本的问题,尝试写死配置参数(不通过命令行指定),结果。。居然可以了。。由此推断是shell脚本什么地方写错了。
  4. 反复检查shell脚本,没看出什么问题,这才留意到程序启动的时候有报一个./start.sh: line 15: $'\r': command not found,由于后面的错误太多了,被刷屏了所以之前没有注意到。大概猜到是换行符的问题,不过因为这个可以导致数据库连接出错吗?在第一步的时候,我已经有打印输入的参数了。
  5. 打开vi使用set ff=unix解决这个换行符的问题后,重新启动,已经可以跑起来了。但是还是蛮疑惑的,一个换行符有这么大作用吗?
  6. 使用getBytes()方法打印入参的byte数组,结果发现每个参数的后面都跟上了一个ASCII码为13的这个字符,也就是\r回车符。我们知道win下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n。linux下不识别\r为回车符,所以导致每行的配置都多了个\r。并且因为这个是控制字符,所以在输出参数的时候不会打印出来,只有使用getBytes()才能看到。

至此,问题已经明朗。我觉得一个教训就是,出现错误的时候,一定要先去检查第一行的错误,任何比较微小的问题(比如这种回车符),都可能引起大的问题,而且通过后面的错误信息还不好定位。另外一个就是在win下修改shell脚本的时候,要特别警惕,注意文件的格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 为什么我在 MySQL 中设置更大的 INT 数据类型长度时没有收到错误消息?

    我对 MySql 中的数据类型长度有点困惑 我阅读了参考手册http dev mysql com doc refman 5 0 en data types html http dev mysql com doc refman 5 0 en
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • oursql 中的参数化查询

    如果有人能告诉我是否可以使用命名占位符进行参数化查询 我将不胜感激oursql 一个用于与 MySQL 数据库交互的 python 模块 例如 我尝试了一种可以与 sqlite3 一起使用的查询 c execute select from
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • MySQL 将表从 Latin1 转换为 utf8

    我需要将包含大量数据的表从 Latin1 转换为 utf8 以便它可以接受韩语字符 如何更改该表而不损坏其中的数据 我的 SQL 语句是什么 最好的方法是什么 ALTER TABLE database name table name CON
  • 使用连接池后如何处理过多的并发连接?

    Scenario 假设您有一个拥有大量流量的网站或应用程序 即使使用数据库连接池 性能也会受到真正的打击 站点 应用程序甚至可能崩溃 因为并发连接太多 Question 人们有什么选择来处理这个问题 我的想法 我在想有这个问题的人可以创建多
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records

随机推荐

  • pandas筛选、修改并实现分类

    虽然学pandas有段时间了 但是真正应用的场合其实很少 大多数功能用excel就已经足够 最近发现wps表格某些功能比 excel还好用 比如筛选重复身份证 wps表格就做得比excel2016要好 最近发现了一个比较麻烦的问题 表格内容
  • JAVA中的术语:句柄是啥意思

    句柄的本质 一个唯一的整数 作为对象的身份id 区分不同的对象 和同类中的不同实例 程序可以通过句柄访问对象的部分信息 句柄不代表对象的内存地址 句柄和指针的区别 程序不能通过句柄直接阅读文件中的信息 指针是可以的 从所起的作用这点来说 句
  • 【项目实战】C语言+easyX带你实现:数字拼图游戏!来试试吧~

    每天一个编程小项目 提升你的编程能力 这是一个简易的拼图游戏 一共有 15 个数字方块 将其一行行的排列为 1 15 即可完成 游戏会记录下完成拼图的时间 我想说的是 很多时候 精彩的游戏不一定非要用图片 将游戏的功能和手感都做好 游戏一样
  • 卫星通信系统概述

    卫星通信系统指通过在轨人造卫星作为中继站对无线电信号进行转发 实现地面及空间等用户之间信息传输的系统 卫星通信系统组成包括空间段及地面段 系统组成如图所示 其中空间段主要指在轨卫星 对在轨卫星进行操控的地面站 这些地面站主要实现跟踪 遥测
  • 《QDebug 2023年8月》

    一 Qt Widgets 问题交流 1 获取 QWidget 当前所在屏幕区域 本来以为 QWidget 的 screen 接口返回的是组件自己所在屏幕的 QSreen 实测是所属 Window 所在的屏幕 如果 Window 跨屏了两者所
  • Android 内存分析工具

    Dalvik 虚拟机支持垃圾收集 但是这不意味着你可以不用关心内存管理 你应该格外注意移动设备的内存使用 手机和平板的内存空间是受到限制的 在这篇文章里面 我们来看看Android SDK里面的一些内存剖析工具 profiling tool
  • Windows11安装Vim编辑器配置指南

    Vim简介 Vim 是一个高度可配置的文本编辑器 旨在让创建和更改任何类型的文本变得非常高效 大多数 UNIX 系统和 Apple OS X 都将它作为 vi 包含在内 用惯了Linux中的Vim编辑器 如果需在Windows的cmd终端中
  • form表单的单输入框回车出现同步提交事件处理

    问题 form表单中如果只有一个输入框 在输入时按Enter回车键会出发默认事件自动提交表单 该交互是同步发生的 会导致页面刷新 解决思路 有三种解决思路 1 增加input输入框的数量 如果form表单中不止一个input输入框 那么该表
  • 基于Python的餐厅点餐系统-订餐食堂预约Python爬虫安装数据分析与可视化计算机毕业设计

    更多项目资源 最下方联系我们 目录 一 项目技术介绍 二 项目配套文档 部分内容 资料获取 一 项目技术介绍 该项目含有源码 文档 PPT 配套开发软件 软件安装教程 项目发布教程 包运行成功以及课程答疑与微信售后交流群 送查重系统不限次数
  • 《管理的套路》图解(二)

    13 Iceburg冰山模型 备注 在组织行为学中 冰山模型从三个层面来描述一个人 A态度 深层 B行为 表层 C能力 中间层 14 Burke Litwin组织变革模型 备注 除了考虑外部环境因素 组织和个人绩效因素以及沟通反馈外 还要考
  • 【python】【kNN】【OCR】用python实现字符识别

    一 问题 OCR 光学字符识别 是机器学习重要的应用之一 一般要经过二值化 去噪 倾斜校正 特征抽取 字符切割 字符识别 后处理等过程 其中难度最大的是字符切割 最关键的步骤是字符识别 一般进行字符识别的方法有kNN SVM CNN等方式
  • NUMA模式

    NUMA模式 补充经常听师兄们提到一个词NUMA模式 NUMA架构产生的背景 早期的计算机中 内存控制器在北桥中 所有CPU对内存的访问都要通过北桥来完成 此时所有CPU访问内存都是 一致的 如下图所示 这样的架构称为UMA Uniform
  • GPT3.5插件免费使用方法(无须科学上网)

    1 下载并安装微软Edge浏览器 2 在浏览器输入 edge extensions 或者在页面操作 3 在扩展页面搜索 webtab 插件 4 启用插件 在浏览器输入 edge extensions 回到扩展管理页面 随后会自动进入页面 选
  • 图的拓扑序列

    拓扑序列 拓扑序是按照点的先后顺序排列的 拓扑序列满足以下两点 1 每个顶点在序列中出现且只出现一次 2 若存在一条从顶点 A 到顶点 B 的路径 那么在序列中顶点 A 出现在顶点 B 的前面 拓扑序列只存在于有向无环图中 可以理解成一个将
  • replace和replaceAll区别

    1 replace的参数是char和CharSequence 即可以支持字符的替换 也支持字符串的替换 CharSequence即字符串序列的意思 说白了也就是字符串 2 replaceAll的参数是regex 即基于规则表达式的替换 比如
  • 浅谈一下Python的现状、发展前景以及Python的就业岗位(含趋势)

    在面对职业选择时我们难免纠结 徘徊 不知道去哪能走多远 我们没有办法只考虑当下 无视未来 当下Python工程师正处于人才需求旺盛 供应短缺的时期 工资一路上涨 假如 即便选择了目前火热的Python编程 那你需要先来了解一下Python的
  • 知识产权贯标补贴政策查询大全及怎么申请,奖励20万

    华夏泰科小编认为知识产权贯标旨在促进企业知识产权创造 运用 保护能力提高 使管理工作制度化 规范化 常规化 整体推进全省企业知识产权管理水平有效提升 申请后可以提升企业无形资产价值 巩固企业市场地位 可向科技主管部门申请战略推进项目 专利实
  • win10下设置maven环境变量

    一 先去maven官网 http maven apache org download cgi 下载压缩包 下拉页面可以看到好多版本 注意下载的版本为红色标注版本 apache maven 3 5 0 bin zip 点击下载即可 二 将下载
  • JSR303(一) 简介

    1 简介 数据校验是任何一个应用程序都会用到的功能 无论是显示层还是持久层 通常 相同的校验逻辑会分散在各个层中 这样 不仅浪费了时间还会导致错误的发生 译注 重复代码 为了避免重复 开发人员经常会把这些校验逻辑直接写在领域模型里面 但是这
  • 关于$'\r': command not found错误的一点体会

    今天运行一个其他组开发的jar包 这个jar包由于运行参数是通过命令行的方式输入的 所以需要运行一个shell脚本来启动 启动脚本类似这样 bin bash jdbc driverClassName com mysql jdbc Drive