有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么是“未找到网络:缓存项[url:…]”确切的意思是?

很快

我不知道在web浏览器中运行小程序时,Java控制台中出现network: Cache entry not found [url: ...]消息的常见原因是什么。我已经知道,这一个可能会出现在执行java.net.URLConnection(从互联网上请求一些数据)时,但仍然不知道它是否有任何可能的原因来调查我的特定问题。所以我的问题是:这条消息的可能原因是什么?这会影响应用程序的正常运行吗?最后,缓存是什么?我能以某种方式控制它吗

细节

发布大型代码片段太困难,也没有必要,所以我会尽量简单地描述这个问题

我正在基于NASA WorldWind构建一个小程序,当请求平铺图像层从JavaScript调用相应小程序的方法时,我会遇到一个非常奇怪的行为。平铺图像层是一个可以覆盖3D地球的层,由固定大小的图片(平铺)组成,这些图片(平铺)将在层加载期间单独请求(假设,层类似于一个平铺拼图:)。这就是为什么每个磁贴的请求都有自己的线程

最初我有一个AccessControllerException,因为每个磁贴请求线程都没有权限进行跨域请求,也没有权限将加载结果读取/保存到本地文件缓存。通过将tile请求的实际代码包装为

AccessController.doPrivileged(new PrivilegedAction() {

    @Override
    public Object run() {

        // Requesting tile and performing with the result...
        // ...
    }
});

结果,我看到tile被加载并存储在本地文件缓存目录中。但我还是看不到地球上的那一层。事实上,我在Java控制台中收到以下网络消息:

network: Cache entry not found [url: http://caches.scanex.ru/getTile.cgi?T=BMNG-01-2004&L=0&X=4&Y=1, version: null]
network: Connecting http://caches.scanex.ru/getTile.cgi?T=BMNG-01-2004&L=0&X=4&Y=1 with proxy=HTTP @ /192.168.4.10:8080

当这些消息出现时,我能够在代码中找到一个位置——当获得HTTP响应代码时:

HttpURLConnection htpc = (HttpURLConnection)fconnection;
responseCode = htpc.getResponseCode();

然后,我发现为URLConnection提供的java.net.URL实例和其他准备也在另一个线程中进行。确切地说,tile的下载经过以下线程链,其中每个子线程由java.util.concurrent.FutureTask表示:

Layer's rendering thread>>Tile request task where URL is to be prepared basing on existing local cache data>>Reading tile contents and handling the result (storing in local cache if it's required(上面的网络信息就是在这里出现的)

最后,我为所有这些具有AccessController.doPrivileged(...)构造的线程授予了权限,我可以看到所需的结果——平铺图像层被覆盖。但我仍然对Cache entry not found消息感到困惑,因为它们被留在Java控制台中,并为每个请求的磁贴显示。这就是我想知道的原因:这种行为正常吗?这些信息到底是什么意思

对感兴趣的人说:http://caches.scanex.ru目前在外部不起作用


共 (0) 个答案