为 Java Web Start/JNLP 应用程序缓存的 jar 文件在哪里?
Posted
技术标签:
【中文标题】为 Java Web Start/JNLP 应用程序缓存的 jar 文件在哪里?【英文标题】:Where is the jar files cached for Java Web Start/JNLP applications? 【发布时间】:2010-12-03 19:01:33 【问题描述】:
【问题讨论】:
至少在Windows中,它不会以原始名称存储jar(即使是.jar文件扩展名)。检查时间戳和文件大小以获取您请求的 jar 文件。 【参考方案1】:在 Windows Vista 或 7 上,它位于 %AppData%\LocalLow\Sun\Java\Deployment\cache
。
【讨论】:
值得一提的是文件扩展名不是jar。因此,您可以检查文件大小并以某种方式找到它。 不起作用,但%HOMEPATH%\appdata\LocalLow\Sun\Java\Deployment\cache
可以。 %AppData% 转到%HOMEPATH%\appdata\Roaming
【参考方案2】:
这取决于...取决于您的操作系统和虚拟机,例如:
使用 Sun JDK 1.5 和 Windows XP:C:\Documents and Settings\userid\Application Data\Sun\Java\Deployment\cache\javaws\
使用 Sun JDK 1.6 和 Vista:C:\Users\userid\AppData\LocalLow\Sun\Java\Deployment\cache\6.0
使用 Sun JDK 1.6 和 GNU/Linux:/home/userid/.java/deployment/cache/6.0
使用 Sun JDK 1.6 和 Mac OS X:~/Library/Caches/Java/cache/6.0/
对于 Sun JDK 6,可以通过 Java 控制面板(常规选项卡中的 Internet 临时文件设置)进行配置。
【讨论】:
【参考方案3】:JNLP 不仅仅是 Sun 的实现。
Debain 提供的 OpenJDK 软件包,例如,捆绑 netx,将其文件存储在 ~/.netx/cache/
中。 Wikipedia entry 有一个除 Sun 之外的已知实现列表。
您真的不应该依赖在您的应用程序代码中众所周知的这条路径。
【讨论】:
如果你碰巧使用的是来自 icedteaweb 的 netx.jar,你可以指定 `-Xclearcache` 命令行参数【参考方案4】:对于使用 icedtea 的 ubuntu 和其他基于 debian 的 Linux 发行版:/home/$USER/.icedtea/cache
如果您只想清除缓存 javaws -uninstall
将不起作用。 javaws -Xclearcache
负责处理冰茶。
【讨论】:
【参考方案5】:您可以轻松查看或清除(卸载)您的 Java WebStart 应用程序。这可以使用 Java 控制面板来完成,如下所述。http://www.ngs.ac.uk/ukca/certificates/certwizard/clearwebstartcache
【讨论】:
【参考方案6】:如果您还对 JNLP 缓存中 jar 的内容感兴趣,您可能希望使用以下脚本(在 Mac OS X 上测试)通过 jar -tvf 检查 jar 文件:
#!/bin/bash
# Author: WF
# see http://***.com/questions/1517350/where-is-the-jar-files-cached-for-java-web-start-jnlp-applications
os=`uname`
case $os in
# Mac OS X
Darwin*)
jnlpcache="$HOME/Library/Application Support/Oracle/Java/Deployment/cache/6.0"
;;
*)
echo "to make this script work for $os you might want to edit it" 1>&2
echo "and add a case option" 1>&2
echo "please copy your result back to the *** answer" 1>&2
exit 1
;;
esac
cd "$jnlpcache"
tmp="/tmp/jnlp$$"
for f in `find . -type f`
do
jar -tvf $f 2>/dev/null > $tmp
if [ $? -eq 0 ]
then
echo "found jar $f"
echo "it contains: "
cat $tmp
fi
done
rm $tmp
【讨论】:
以上是关于为 Java Web Start/JNLP 应用程序缓存的 jar 文件在哪里?的主要内容,如果未能解决你的问题,请参考以下文章