You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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)

问题分析

从错误日志里能看到两个核心问题:

  1. WARNING: java.io.tmpdir directory does not exist:IDEA指定的临时目录不存在
  2. 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_ConfigD:\IDEA_SystemD:\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

火山引擎 最新活动