IntelliJ IDEA运行程序时出现java.io.tmpdir不存在及路径非法字符错误的求助
IntelliJ IDEA运行程序时出现java.io.tmpdir不存在及路径非法字符错误的求助
问题描述
我在IntelliJ IDEA中运行程序时遇到了如下错误,已经多次重新下载IDEA但问题依旧。我刚接触编程,不知道该怎么解决,请问有什么修复方法吗?
错误信息如下:
Abnormal build process termination: "C:\\Program Files\\Java\\jdk-23\\bin\\java.exe" -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=C:\\Program Files\\JetBrains\\IntelliJ IDEA Community Edition 2024.2.4/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=5099883117943016963 -Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US -Didea.paths.selector=IdeaIC2024.2 "-Didea.home.path=C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4" -Didea.config.path=C:/Users/Hưởng/AppData/Roaming/JetBrains/IdeaIC2024.2 -Didea.plugins.path=C:/Users/Hưởng/AppData/Roaming/JetBrains/IdeaIC2024.2/plugins -Djps.log.dir=C:/Users/Hưởng/AppData/Local/JetBrains/IdeaIC2024.2/log/build-log "-Djps.fallback.jdk.home=C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/jbr" -Djps.fallback.jdk.version=21.0.4 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/Hưởng/AppData/Local/JetBrains/IdeaIC2024.2/compile-server/untitled2_1d2a6d90/_temp_ -Djps.backward.ref.index.builder=true -Djps.backward.ref.index.builder.fs.case.sensitive=false "-Djps.kotlin.home=C:\\Program Files\\JetBrains\\IntelliJ IDEA Community Edition 2024.2.4\\plugins\\Kotlin\\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path="C:\\Users\\HNG\~1\\AppData\\Local\\Temp\\kotlin-idea-15111308323172465624-is-running" -Dide.propagate.context=false -classpath "C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jps-builders.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jps-builders-6.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jps-javac-extension.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/util-8.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/util_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/platform-loader.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/annotations.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/trove.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jetbrains.kotlinx.metadata.jvm.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/protobuf.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/jps-model.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/javac2.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/forms_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/aether-dependency-resolver.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/maven-resolver-connector-basic.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/maven-resolver-transport-file.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/maven-resolver-transport-http.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/idea_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/lib/util-8.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/java/lib/jps/java-compiler-charts-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/javaFX/lib/javaFX-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/javaFX/lib/javaFX-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/eclipse/lib/eclipse-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/eclipse/lib/eclipse-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/platform-langInjection/lib/java-langInjection-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/Groovy/lib/groovy-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/Groovy/lib/groovy-constants-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/uiDesigner/lib/jps/java-guiForms-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/maven/lib/maven-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2024.2.4/plugins/gradle-java/lib/gradle-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 61150 c22780a1-1eb9-40bb-9092-a243232e1493 C:/Users/Hưởng/AppData/Local/JetBrains/IdeaIC2024.2/compile-server WARNING: java.io.tmpdir directory does not exist Exception in thread "main" java.lang.ExceptionInInitializerError at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1161) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:340) at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(MethodHandleAccessorFactory.java:71) at java.base/jdk.internal.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:154) at java.base/java.lang.reflect.Method.acquireMethodAccessor(Method.java:726) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.jetbrains.jps.cmdline.Launcher.main(Launcher.java:43) Caused by: java.nio.file.InvalidPathException: Illegal char <?> at index 11: C:/Users/H�?ng/AppData/Local/JetBrains/IdeaIC2024.2/log/build-log\\build-log-jul.properties at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:204) at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:175) at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77) at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92) at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:231) at java.base/java.nio.file.Path.of(Path.java:148) at java.base/java.nio.file.Paths.get(Paths.java:69) at org.jetbrains.jps.cmdline.LogSetup.initLoggers(LogSetup.java:30) at org.jetbrains.jps.cmdline.BuildMain.<clinit>(BuildMain.java:43)
问题分析
从错误日志里能看到两个核心问题:
WARNING: java.io.tmpdir directory does not exist:IDEA指定的临时目录不存在InvalidPathException: Illegal char <?> at index 11: C:/Users/H�?ng/...:你的Windows用户名(Hưởng)里的特殊字符(ư)在路径解析时出现了乱码,导致IDEA无法正确识别路径
解决方案
针对这两个问题,咱们一步步来解决:
1. 手动创建缺失的临时目录
先找到错误里提到的tmpdir路径:C:/Users/Hưởng/AppData/Local/JetBrains/IdeaIC2024.2/compile-server/untitled2_1d2a6d90/_temp_
- 打开文件资源管理器,导航到
C:/Users/Hưởng/AppData/Local/JetBrains/IdeaIC2024.2/compile-server目录 - 如果
untitled2_1d2a6d90文件夹不存在,就手动创建它,然后在里面创建_temp_子文件夹 - 或者直接复制完整路径到文件资源管理器的地址栏,按回车,系统会提示你创建不存在的文件夹,点击确认即可
2. 修复用户名特殊字符导致的路径问题
这个是更核心的问题,因为用户名里的Unicode字符导致IDEA的JPS构建工具解析路径失败。有两个办法:
方法A:修改IDEA的配置,指定不含特殊字符的缓存和临时路径
- 关闭IntelliJ IDEA
- 找到IDEA的安装目录,比如
C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.2.4 - 进入
bin文件夹,找到idea64.exe.vmoptions(如果你用的是32位系统就找idea.exe.vmoptions) - 用记事本打开这个文件,在最后添加两行配置,指定新的缓存和临时路径(路径要选一个用户名不含特殊字符的目录,比如D盘根目录下新建的文件夹):
-Didea.config.path=D:\IDEA_Config -Didea.system.path=D:\IDEA_System -Djava.io.tmpdir=D:\IDEA_Temp - 保存文件,然后手动创建
D:\IDEA_Config、D:\IDEA_System、D:\IDEA_Temp这三个文件夹 - 重新启动IDEA,再尝试运行程序
方法B:修改Windows用户名(可选,适合能改用户名的情况)
如果上面的方法不行,你可以考虑修改Windows的用户名,换成不含特殊字符的名称(比如Duong),这样所有路径都会自动变成正常的字符,不会再出现乱码问题。不过这个操作需要注意备份用户目录下的重要文件:
- 用管理员账户登录Windows(如果当前账户是管理员,就直接下一步)
- 打开
设置->账户->你的信息->管理我的账户->信息->编辑名字 - 修改为不含特殊字符的用户名,保存后重启电脑
- 重启后,原来的用户目录
C:\Users\Hưởng可能会变成C:\Users\Hưởng.old,新的用户目录会是新的用户名,记得把旧目录里的重要文件复制到新目录
3. 检查JDK配置是否正确
另外,你当前用的是JDK 23,这是比较新的版本,可能和IDEA 2024.2.4存在兼容性问题:
- 打开IDEA,进入
File->Project Structure->Project Settings->Project - 将
Project SDK换成JDK 17或者JDK 21(这两个是LTS版本,兼容性更好) - 如果没有安装的话,可以去Oracle官网或者OpenJDK官网下载对应的LTS版本,然后添加到IDEA的SDK列表里
验证方法
完成上面的步骤后,打开IDEA,创建一个简单的Hello World程序运行测试:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
如果能正常运行输出,就说明问题解决了。
备注:内容来源于stack exchange,提问作者Duy Hưởng




