windows开发的一个诡异坑,百年一遇?
今天项目组的小朋友遇到了一个很奇怪的问题
一个工程,在IDEA中运行十分正常,但是线上就是报错,报找不到类
但反编译之后明明类就在,但本地怎么运行也复现不出线上的问题,就是能正常运行
小朋友也很着急,时间也过去了不少,于是来求助我
在帮小朋友排除了一些猜测之后找到了罪魁祸首
windows的大小写不敏感
大家都知道windows是大小写不敏感的,同一个单词无论大小写都被认为是相同的东西
而linux是大小写敏感的,大小写不同被认为是两个东西
这次的问题就出在一个包名上,这个包名命名不规范,用了驼峰式的命名,包含一个大写字母
testUp
所有类中import的部分都是大写,而实际打在jar包中的目录是全小写,导致在linux这个敏感环境下就找不到这个含有大写的路径了
有人说这不是很简单的问题么,谁让大小写不一致呢,活该
那我为什么说这是百年一遇呢
原因就在于打包都是由IDE完成的,我们IDE用的是IDEA,使用maven install进行打包
理论上是不应该出现这个问题的,以前也从来没遇到过,我今天又做了很多的测试也再没复现过
真的变成了一桩悬案,有可能是在某种极其特殊的场景下的一个IDEA的BUG
写出来给大家遇到的一些疑难杂症提供一个奇葩的思路
这个事儿看来很难再找到具体原因了
不过我倒是对windows和linux对于大小写不同的态度有点儿兴趣,为什么会有这样的差异呢
抱着这个好奇心我找了找网上相关的帖子,发现很多人在开发的时候都遇到了这样的问题,特别是很多用git进行版本管理或者多人协作管理的情况加,看到的大多数人的建议是linux开发,windows查看
从直觉上来讲大小写区分好像是理所应当的,明明就是两个字母嘛,我们设密码的时候也知道大小写是不同的
那windows为什么会在文件系统这层做出一个大小写不区分的决定呢,好奇怪
这里先做一个说明,并不是FAT32或者NDFS这种存储形式不支持大小写敏感,也不是所有windows都大小写不敏感,windows的很多版本都是可以支持大小写敏感的,Server版全系列,普通版95到7都可以。Server系列通过修改文件服务的配置就可以,普通版需要修改注册表,好像唯一默认敏感的是server2000
回到windows默认不敏感这件事儿上来,通过查一些说明,似乎是从MS DOS继承下来的,至于MS DOS为什么不敏感,这个已经没有什么资料可以考证了,只是坊间传说是为了方便用户,提升用户体验
从这个侧面也能感受到,用户体验这个东西,祸福相依,有积极的一面也就一定会为之付出相应的代价

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PHP使用Beanstalkd实例
相关笔记:Beanstalkd消息/任务队列CentOS编译和yum安装Beanstalkd及service和systemctl管理Composer在Windows和Linux的安装和使用有关Beanstalkd的基本概念,编译和yum的安装方法已经在上述笔记中记录了,今天练习下PHP使用Beanstalkd的过程,我选择的是使用Pheanstalk类来连接Beanstalkd 1.使用Composer安装Pheanstalk composer require pda/pheanstalk 2.实现代码 php查看beanstalkd状态脚本Status.php <?php /** * Created by PhpStorm. * User: jmsite.cn * Date: 2019/1/21 * Time: 10:32 */ require "../vendor/autoload.php"; use Pheanstalk\Pheanstalk; $pheanstalk = new Pheanstalk('192.168.75.135',11300); print_r($ph...
- 下一篇
淘宝api Python 接口升级 3.0 版本
因为自学 python 工作中会经常用到淘宝Api调用数据 一直以来后台下载的淘宝Api 都是2.7版本 还是12年 lihao同学编写,一直没有升级 用Python 自带的2to3脚本工具升级后 大部分接口 调用正常 但是上传图片接口 一直提示错误 由于是初学 只能网上找资料了 找了很多资料 都没解决 最后通过国外友人的一篇博客 找到了解决方法 在这里分享一下 希望能帮助其他人 只要替换 base.py 代码就可以 初步测试调用接口 都能成功 # -*- coding: utf-8 -*- """ Created on 2012-7-3 @author: lihao """ try: import httplib except ImportError: import http.client as httplib import urllib import time import hashlib import json import io import top import sys import itertools import mimetypes from urllib.parse i...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装