java - 同一程序的 IDE 启动版本和 jar 版本之间的输出不同
问题描述
我有一个在 IDE 中运行良好的 javafx 程序,但是从批处理文件启动时会出现编码/字符集问题。
所以,假设我有这个代码:
String lol = DateTimeFormatter.ofPattern("MMMM", new Locale("fr")).format(startDate);
String lol2 = "août";
int lol3 = lol.compareTo(lol2);
System.out.println(String.format("Voici la différence entre %s et %s: %d", lol, lol2, lol3));
当我在 IDE (IntelliJ IDEA Ultimate) 中运行它时,我得到以下输出:
Voici la différence entre août et août: 0
当我使用批处理文件运行它时,我得到以下输出:
Voici la différence entre août et août: 56
我的批处理文件如下:
start java -DdefaultCharset=UTF-8 -Dfile.encoding=UTF-8 -jar cs-build-master-1.0.0.jar
我对此完全感到困惑!任何帮助将不胜感激。
编辑
我正在使用 shadowJar 导出我的 jar 文件。这是毕业代码:
jfx {
// minimal requirement for jfxJar-task
mainClass = 'com.lol.csbuildmaster.MainApp'
// minimal requirement for jfxNative-task
vendor = 'Lol'
}
shadowJar {
baseName = 'cs-build-master'
classifier = null
version = "1.0.0"
}
解决方案
推荐阅读
- c# - 当我在查询字符串参数中发送逗号时,twitter api“更新/状态”返回 401
- c++ - 使用 gcc 而不是 g++ 输出二进制文件的大小更小
- javascript - 在子页面点击图片加载视频
- machine-learning - 图像像素可以存储在一维数组中吗?
- google-apps-script - Google Meet startTimeCode 使用,是否可以从电子表格单元格中查找?
- maven - 以管理员身份运行 shell 时无法识别 Maven
- r - Rstudio:使用 for 循环求解方程
- ios - 如何使用 SwiftUI 在导航栏上添加按钮
- css - 如何将文本粘贴到页面底部
- java - 如何使用流而不是 for 循环