我想知道如何使用Java Code或CMD Line代码清除Java Cache。
这应该在Windows 7以上的任何地方的Microsoft Windows机器上完成。
这应该在多台计算机上完成,因此文件路径会有所不同。
该应用程序使用Javaw作为它启动时的默认应用程序(不要与Javaws或Webstart混淆 - 我已经有代码如何清除Javaws缓存)。所以我需要知道如何清除Javaw缓存。
答案 0 :(得分:0)
您可以使用Java Control Panel。
How do I clear the Java cache?
How can do it in command line?
这将是清除缓存的命令
javaws -clearcache // Remove all non-installed applications from the cache.
和
javaws -uninstall // Remove all applications from the cache.
答案 1 :(得分:0)
这可以通过以下行归档:javaws -Xclearcache -silent -Xnosplash
答案 2 :(得分:0)
我的理解是有三种主流的Java缓存技术:
Application Cache是Java Webstart和相关浏览器插件的一部分。这可以使用javaws
命令行工具或Java控制面板进行控制,如@ RuchiraGayanRanaweera的回答中所述。
AFAIK,javaws
是唯一支持的从命令行控制应用程序缓存的方法。
Java Object Cache框架是Oracle J2EE容器产品线(又名OC4J)的一部分。 OC4J文档中描述了这一点:"Chapter 9 - Java Object Cache"。 (我认为这不是你要找的。)
某些JVM实现具有允许编译类被不同JVM缓存和共享或重用的功能。 IBM Java和Eclipse OpenJ9支持这一点;例如见"Shared class cache"。
但是,这不是标准(免费)Oracle或OpenJDK Java支持的功能。在Java 5中引入的共享系统类数据显然是一个模糊的JVM功能,并且存在一个商业功能(从Java 8开始)将其扩展到应用程序类。细节很难找到......
更新 - 从Java 10开始,Oracle和OpenJDK JVM现在支持"Class Data Sharing"(CDS)。本文档提供了有关如何从命令行重新生成缓存的说明。
考虑到最初提出问题的上下文,我怀疑OP是实际询问Java Webstart应用程序缓存,但没有意识到这个功能是Java的一部分Webstart而不是Java SE作为一个整体。
答案 3 :(得分:0)
创建一个名为clearCache.bat的批处理文件。
@Echo Off
echo =========================
echo Now clearing all users Java cache folder
set "docandset=%homedrive%\users"
>> c:\Delete.log echo/ "Java\Deployment\cache\6.0\"
for /f "delims=" %%a in ('dir "%docandset%" /ad /b') do (
for %%b in (
"%docandset%\%%a\AppData\LocalLow\Sun\Java\Deployment\cache\6.0"
) do (
echo %%b >> c:\Delete.log
cd /d %%b >> c:\Delete.log 2>&1
rd /s /q %%b >> c:\Delete.log 2>&1
del /f /s /q %%b >> c:\Delete.log 2>&1
)
)
echo =========================
echo COMPLETE!!!!
echo =========================
echo All users Java cache folder has been cleared.
PAUSE
现在从命令提示符(cmd)运行批处理文件
Runtime.getRuntime().exec("cmd /c start clearCache.bat");
它会在清除缓存后向您显示警报。