动态查找java缓存目录

动态查找java缓存目录,java,caching,applet,java-web-start,Java,Caching,Applet,Java Web Start,有什么方法可以通过编程找到java缓存目录吗 通常它位于如下目录中: System.getProperty("user.home") + someMiddleDir + "/Sun/Java/Deployment/cache/" + versionCode; 它在Windows Vista上解析为“c:/Users/userId/AppData/LocalLow/Sun/Java/Deployment/cache/6.0” 但我需要以更动态/精确的方式找到它(最小硬编码代码/路径)。使

有什么方法可以通过编程找到java缓存目录吗

通常它位于如下目录中:

System.getProperty("user.home") + someMiddleDir + "/Sun/Java/Deployment/cache/" +
    versionCode;
它在Windows Vista上解析为
“c:/Users/userId/AppData/LocalLow/Sun/Java/Deployment/cache/6.0”

但我需要以更动态/精确的方式找到它(最小硬编码代码/路径)。

使用以下方法:

com.sun.deploy.config.config.getCacheDirectory()


一位好朋友告诉我这个讨厌的小方法:)

一个更通用的解决方案是读取系统属性
deployment.user.cachedir
。我用Java8和Java9测试了这一点,这两个版本在我的案例中都适用

System.getProperty("deployment.user.cachedir")

对于字符串的第一部分(home+middle dir),您可以检查
%APPDATA%
环境变量。
APPDATA
返回“C:\Users\userId\APPDATA\Roaming”,因此它不是绝对正确的,因为应该有“LocalLow”而不是“Roaming”,但感谢您的建议:)此函数在java 11中不再起作用