为 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 文件在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Java Web入门(初识 ‍ JSP)

你真的理解微服务架构吗

一篇文章快速理解微服务架构

Java中jsp和Servlet的区别

java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

java实现一个简单的Web服务器