zoukankan      html  css  js  c++  java
  • 解决jar包在cmd里运行和IDE里运行不一致问题

    起因

    我们小组有两位同学,在此次个人编程作业中,和我一样都采用了Java作为编程语言,但他们都遇到了问题:

    • A同学的程序在IDEA里跑的结果和cmd里跑jar的结果不一致
    • B同学的程序在IDEA里能跑,在cmd里直接跑不动

    解决思路

    同样的开发方式,为什么他们出现了问题,而我没有???

    我开始找CSDN、博客园啥的...

    • 开始我怀疑是打包方式有问题,可我用了无数种打包方式后,于事无补
    • 我觉得可能跟jar包运行方式有关系,我决定直接运行编译文件,发现结果一样,问题仍然没解决

    怎么办呢???


    我突然想起来,无论是eclipse还是IDEA这样的IDE,他们运行Java程序,本质就是集成了各种命令行语句,最多自动添加了一些参数

    "C:Program FilesJavajdk-11.0.1injava.exe" -Dvisualvm.id=3207379397174 "-javaagent:D:IntelliJ IDEA 2020.1.3libidea_rt.jar=55578:D:IntelliJ IDEA 2020.1.3in" -Dfile.encoding=UTF-8 -classpath C:Users97845DesktopSubjects软工实践others_projects31802245outproductionproject1 com.RoseZ.Main D:sim_0.8orig.txt D:sim_0.8orig_0.8_rep.txt D:project1srccomRoseZanswerans9.txt
    

    如果我模仿他的参数可不可以呢?说不定它的参数有优化!但我发现了javaagent,可能是Java程序运行代理,会不会跟原生Java程序运行不一样,又把我搞懵了,突然又觉得进死胡同了。

    我决定放眼国外,用StackOverflow

    sof

    编码问题!!!我想起来Windows的编码好像默认是GBK,我不知道JVM是不是和OS有关系,但可以肯定的是,在cmd中跑Java程序肯定不是utf-8。而在上面的参数中我们可以看到IDEA的默认编码是UTF-8!!!

    最后问题得到了成功解决!下面是运行方式:

    ## 原来异常的运行方式(常规操作)
    java -jar main.jar orig.txt orig_0.8_add.txt ans.txt
    
    ## 应该这样
    java -Dfile.encoding=utf-8 -jar main.jar orig.txt orig_0.8_add.txt ans.txt
    

    还是有问题,那为什么我的就可以呢?

    后来我在我的代码中发现了这个:

    code

    原来我早就在代码中指定好UTF-8的编码格式了!在读入txt文本时,我就在转换后的String构造方法中,确认了它的charset!

    推荐

    Java中String字符编码(CharSet)转换的相关问题的一个集合

    总结

    • 第一次个人编程作业是处理文本的问题,需要时刻关注编码问题,很重要,特别是我们还是处理的中文文本
    • 面向Google,懂的都懂
  • 相关阅读:
    Chino 操作系统开发日志 (1)
    将Asp.Net Core和corefx移植到.Net 4.0
    C++编写操作系统(1):基于 EFI 的 Bootloader
    第二次作业:支付宝手机软件分析
    第一次作业:以人为鉴 可以明得失
    个人附加作业
    个人作业3---个人总结
    结对编程2---单元测试
    个人作业2---必应词典案例分析
    结对编程作业1
  • 原文地址:https://www.cnblogs.com/qizong007/p/13691461.html
Copyright © 2011-2022 走看看