导出Jar包爆出的路径空指针异常和乱码问题

博主用Java写学生管理系统,导出Jar包时遇到问题。一是在cmd中运行出现乱码,原因是Windows默认GBK编码,IDE用UTF - 8编码,给出两种解决方案;二是导出Jar包后出现路径空指针异常,未找到原因,采用其他方法解决。

Copyright&copyZi10ng
不能甘居人后

最近用Java写了一个学生管理系统,最后导出Jar包的时候出了一些问题,记录下来,和大家分享

1. 乱码问题
问题描述

当我在IDE中编译并运行的时候,包括字符没有任何错误,但是当我把.class文件扔到cmd中运行的时候就会发现有乱码问题,cmd命令如下
java view.LoginRun

问题原因

大概可以判断出来是编码格式不一样,于是搜了一个Windows默认的编码标准,原来是GBK,但是我在IDE中用的编码格式是UTF-8,所以造成了乱码现象

解决方案

有两种解决方案

  • 第一种,在I/O读取的过程中就直接强制按某一种编码格式读写:
    BufferedReader bufferedReader =
                    new BufferedReader(
                    new InputStreamReader(
                    new FileInputStream(
                            HelpDao.class.getResource("/").getPath() + "//file//txt//helpMe.txt"), StandardCharsets.UTF_8))
    
  • 第二种方式,在输入命令的时候,规定用某种编码格式
    java -Dfile.encoding=UTF-8 view.LoginRun
2. 路径空指针异常
问题描述

当我通过反射来获取到相对路径的父目录时,代码如上所示,在cmd中运行一切正常,但是导出Jar包以后,就会爆出NPE

问题原因

暂时没有找到原因,关于这个问题我搜索了好久,包括在starkoverflow上寻求答案,甚至找到了04年oracle社区的一个回答,但是均没有什么收获。

解决方案

俗话说,条条大路通罗马,毕竟是在做大作业,功能还是要完成的,然后就寻求了另外一种方法——通过new File().getAbsolutelyPath()来获取将对路径的父目录可以实现

说句题外话,在导出jar包的时候,Jar包中尽量不要包含要写入的问题,如果必须要包含的话,就需要用到I/O流中的专门用于zip的输入输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值