处理Windows中文用户名导致的Dart AOT编译失利问题
Windows中文用户名导致的Dart AOT编译失利
我的微软账户一向运用中文用户名,Windows会把这个用户名作为用户文件夹的称号,并且很难修正. 这就导致但凡放在这个途径下的文件都得有一个带中文的绝对途径. Dart 编译时或许由于这儿的中文字符而犯错.
问题呈现时的操作体系及Dart SDK版别
体系 | Windows11 22H2 家庭中文版 |
Dart SDK | version=3.1.3 (stable) (Tue Sep 26 14:25:13 2023 +0000) on "windows_x64" |
问题的产生进程
-
我编写了一个简略的Dart HelloWorld程序
翻开代码source.dart
, 像这样:import 'dart:io';
void main()
{
print('Hello World!');
var input = stdin.readLineSync(); //输入一串字符, 再输出
stdout.writeln('input: $input');
}
-
在文件管理器中, 翻开这个
source.dart
文件地点文件夹, 然后右键翻开PowerShell窗口. 输入指令:dart compile exe source.dart
这是Dart官方文档规则的生成exe文件的编译办法.
-
PowerShell窗口提示:
Error: Unable to read file: C:\Users\某中文用户名\AppData\Local\Temp\83da944d\kernel.dill ../../runtime/vm/dart_api_impl.cc: 2290: error: Dart_ExitScope expects there to be a current isolate. Did you forget to call Dart_CreateIsolateGroup or Dart_EnterIsolate? ...其他信息... Error: AOT compilation failed Generating AOT snapshot failed!
榜首行的信息指出,无法读取用户临时文件夹途径下的某个文件.
估测的原因及处理办法
-
原因
Dart编译进程中需求读写体系的用户临时文件夹, 并且好像不允许这个临时文件夹途径中有中文字符.
Windows11默许的用户临时文件夹途径是%USERPROFILE%\AppData\Local\Temp //这儿%USERPROFILE%指的是用户文件夹途径
可以在 设置→体系→体系信息→高档体系设置→环境变量→用户变量 检查 TEMP 和 TMP 项目途径. 我的中文用户名就呈现在这儿.
-
处理办法
从头指定一个不含中文字符的途径作为临时文件夹,保存到体系环境变量里面. 首要新建一个文件夹,例如C:\UserTemp //纷歧定是这个途径, 可以指定为其他途径
把上述 TEMP 和 TMP 项目都修正为这一途径,然后保存.
-
测验
到程序源文件方位从头翻开PowerShell窗口, 输入dart compile exe source.dart
随后提示
Generated: 当时途径\source.exe
在文件管理器中可以看到预期的exe文件的确已生成. 翻开此文件, 呈现下面的窗口
阐明此exe文件可以正常履行,问题现已处理了.