ToB企服应用市场:ToB评测及商务社交产业平台
标题:
解决Windows中文用户名导致的Dart AOT编译失败问题
[打印本页]
作者:
锦通
时间:
2023-11-6 04:56
标题:
解决Windows中文用户名导致的Dart AOT编译失败问题
Windows中文用户名导致的Dart AOT编译失败
问题出现时的操作系统及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';
<p>void main()<br>
{<br>
print('Hello World!');<br>
var input = stdin.readLineSync(); //输入一串字符, 再输出<br>
stdout.writeln('input: $input');<br>
}<br>
</p>
复制代码
在文件管理器中, 打开这个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 项目路径是否含中文字符.
若是, 执行下面的步骤.
解决办法
把上述 TEMP 和 TMP 项目都修改为
C:\UserTemp //不一定是这个路径, 可以指定为别的路径
复制代码
然后保存.
测试
到程序源文件位置重新打开PowerShell窗口, 输入
dart compile exe source.dart
复制代码
随后提示
Generated: 当前路径\source.exe
复制代码
在文件管理器中可以看到预期的exe文件确实已生成. 打开此文件, 出现下面的窗口
说明此exe文件能够正常执行.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4