Index: /trunk/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java	(revision 11187)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java	(revision 11188)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -35,4 +36,5 @@
      */
     public CachedTileLoaderFactory(ICacheAccess<String, BufferedImageCacheEntry> cache, Class<? extends TileLoader> tileLoaderClass) {
+        CheckParameterUtil.ensureParameterNotNull(cache, "cache");
         this.cache = cache;
         try {
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 11187)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java	(revision 11188)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
+import org.openstreetmap.josm.data.imagery.TileLoaderFactory;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.layer.AbstractCachedTileSourceLayer;
@@ -128,5 +129,10 @@
         headers.put("User-Agent", Version.getInstance().getFullAgentString());
 
-        cachedLoader = AbstractCachedTileSourceLayer.getTileLoaderFactory("TMS", TMSCachedTileLoader.class).makeTileLoader(this, headers);
+        TileLoaderFactory cachedLoaderFactory = AbstractCachedTileSourceLayer.getTileLoaderFactory("TMS", TMSCachedTileLoader.class);
+        if (cachedLoaderFactory != null) {
+            cachedLoader = cachedLoaderFactory.makeTileLoader(this, headers);
+        } else {
+            cachedLoader = null;
+        }
 
         uncachedLoader = new OsmTileLoader(this);
@@ -206,5 +212,5 @@
 
     public final void setFileCacheEnabled(boolean enabled) {
-        if (enabled) {
+        if (enabled && cachedLoader != null) {
             setTileLoader(cachedLoader);
         } else {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java	(revision 11187)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java	(revision 11188)
@@ -113,5 +113,9 @@
      */
     public static TileLoaderFactory getTileLoaderFactory(String name, Class<? extends TileLoader> klazz) {
-        return new CachedTileLoaderFactory(getCache(name), klazz);
+        CacheAccess<String, BufferedImageCacheEntry> cache = getCache(name);
+        if (cache == null) {
+            return null;
+        }
+        return new CachedTileLoaderFactory(cache, klazz);
     }
 
