Index: /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractPasteAction.java	(revision 13649)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -76,12 +77,16 @@
         // Observed behaviour: getActionCommand() returns Action.NAME when triggered via menu, but shortcut text when triggered with it
         if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
-            final PointerInfo pointerInfo = MouseInfo.getPointerInfo();
-            if (pointerInfo != null) {
-                final Point mp = pointerInfo.getLocation();
-                final Point tl = mapView.getLocationOnScreen();
-                final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
-                if (mapView.contains(pos)) {
-                    mPosition = mapView.getEastNorth(pos.x, pos.y);
+            try {
+                final PointerInfo pointerInfo = MouseInfo.getPointerInfo();
+                if (pointerInfo != null) {
+                    final Point mp = pointerInfo.getLocation();
+                    final Point tl = mapView.getLocationOnScreen();
+                    final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
+                    if (mapView.contains(pos)) {
+                        mPosition = mapView.getEastNorth(pos.x, pos.y);
+                    }
                 }
+            } catch (SecurityException ex) {
+                Logging.log(Logging.LEVEL_ERROR, "Unable to get mouse pointer info", ex);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java	(revision 13649)
@@ -108,21 +108,26 @@
         File cacheDir = new File(Config.getDirs().getCacheDirectory(true), "jcs");
 
-        if (!cacheDir.exists() && !cacheDir.mkdirs()) {
-            Logging.warn("Cache directory " + cacheDir.toString() + " does not exists and could not create it");
-        } else {
-            File cacheDirLockPath = new File(cacheDir, ".lock");
-            try {
-                if (!cacheDirLockPath.exists() && !cacheDirLockPath.createNewFile()) {
-                    Logging.warn("Cannot create cache dir lock file");
-                }
-                cacheDirLock = FileChannel.open(cacheDirLockPath.toPath(), StandardOpenOption.WRITE).tryLock();
-
-                if (cacheDirLock == null)
-                    Logging.warn("Cannot lock cache directory. Will not use disk cache");
-            } catch (IOException e) {
-                Logging.warn("Cannot create cache dir \"" + cacheDirLockPath.toString() + "\" lock file: " + e.toString());
-                Logging.warn("Will not use disk cache");
+        try {
+            if (!cacheDir.exists() && !cacheDir.mkdirs()) {
+                Logging.warn("Cache directory " + cacheDir.toString() + " does not exists and could not create it");
+            } else {
+                File cacheDirLockPath = new File(cacheDir, ".lock");
+                try {
+                    if (!cacheDirLockPath.exists() && !cacheDirLockPath.createNewFile()) {
+                        Logging.warn("Cannot create cache dir lock file");
+                    }
+                    cacheDirLock = FileChannel.open(cacheDirLockPath.toPath(), StandardOpenOption.WRITE).tryLock();
+
+                    if (cacheDirLock == null)
+                        Logging.warn("Cannot lock cache directory. Will not use disk cache");
+                } catch (IOException e) {
+                    Logging.warn("Cannot create cache dir \"" + cacheDirLockPath.toString() + "\" lock file: " + e.toString());
+                    Logging.warn("Will not use disk cache");
+                }
             }
-        }
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_WARN, "Unable to configure disk cache. Will not use it", e);
+        }
+
         // this could be moved to external file
         Properties props = new Properties();
@@ -140,7 +145,11 @@
         props.setProperty("jcs.default.elementattributes.IsSpool",            "true");
         // CHECKSTYLE.ON: SingleSpaceSeparator
-        CompositeCacheManager cm = CompositeCacheManager.getUnconfiguredInstance();
-        cm.configure(props);
-        cacheManager = cm;
+        try {
+            CompositeCacheManager cm = CompositeCacheManager.getUnconfiguredInstance();
+            cm.configure(props);
+            cacheManager = cm;
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_WARN, "Unable to initialize JCS", e);
+        }
     }
 
@@ -173,5 +182,5 @@
             if (cacheManager == null)
                 initialize();
-            return getCacheInner(cacheName, maxMemoryObjects, maxDiskObjects, cachePath);
+            return cacheManager != null ? getCacheInner(cacheName, maxMemoryObjects, maxDiskObjects, cachePath) : null;
         }
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java	(revision 13649)
@@ -39,6 +39,15 @@
 public class MultipolygonBuilder {
 
-    private static final ForkJoinPool THREAD_POOL =
-            Utils.newForkJoinPool("multipolygon_creation.numberOfThreads", "multipolygon-builder-%d", Thread.NORM_PRIORITY);
+    private static final ForkJoinPool THREAD_POOL = newForkJoinPool();
+
+    private static ForkJoinPool newForkJoinPool() {
+        try {
+            return Utils.newForkJoinPool(
+                    "multipolygon_creation.numberOfThreads", "multipolygon-builder-%d", Thread.NORM_PRIORITY);
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to create new ForkJoinPool", e);
+            return null;
+        }
+    }
 
     /**
@@ -385,6 +394,10 @@
     private static List<PolygonLevel> findOuterWaysMultiThread(List<JoinedPolygon> boundaryWays) {
         final IntersectionMatrix cache = new IntersectionMatrix(boundaryWays);
-        return THREAD_POOL.invoke(new Worker(cache, boundaryWays, 0, boundaryWays.size(), new ArrayList<PolygonLevel>(),
-                Math.max(32, boundaryWays.size() / THREAD_POOL.getParallelism() / 3)));
+        if (THREAD_POOL != null) {
+            return THREAD_POOL.invoke(new Worker(cache, boundaryWays, 0, boundaryWays.size(), new ArrayList<PolygonLevel>(),
+                    Math.max(32, boundaryWays.size() / THREAD_POOL.getParallelism() / 3)));
+        } else {
+            return new Worker(cache, boundaryWays, 0, boundaryWays.size(), new ArrayList<PolygonLevel>(), 0).computeDirectly();
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13649)
@@ -94,6 +94,15 @@
 public class StyledMapRenderer extends AbstractMapRenderer {
 
-    private static final ForkJoinPool THREAD_POOL =
-            Utils.newForkJoinPool("mappaint.StyledMapRenderer.style_creation.numberOfThreads", "styled-map-renderer-%d", Thread.NORM_PRIORITY);
+    private static final ForkJoinPool THREAD_POOL = newForkJoinPool();
+
+    private static ForkJoinPool newForkJoinPool() {
+        try {
+            return Utils.newForkJoinPool(
+                    "mappaint.StyledMapRenderer.style_creation.numberOfThreads", "styled-map-renderer-%d", Thread.NORM_PRIORITY);
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to create new ForkJoinPool", e);
+            return null;
+        }
+    }
 
     /**
@@ -1600,8 +1609,13 @@
             // Reason: Make sure, ElemStyles.getStyleCacheWithRange is not called for the same primitive in parallel threads.
             // (Could be synchronized, but try to avoid this for performance reasons.)
-            THREAD_POOL.invoke(new ComputeStyleListWorker(circum, nc, relations, allStyleElems,
-                    Math.max(20, relations.size() / THREAD_POOL.getParallelism() / 3), styles));
-            THREAD_POOL.invoke(new ComputeStyleListWorker(circum, nc, new CompositeList<>(nodes, ways), allStyleElems,
-                    Math.max(100, (nodes.size() + ways.size()) / THREAD_POOL.getParallelism() / 3), styles));
+            if (THREAD_POOL != null) {
+                THREAD_POOL.invoke(new ComputeStyleListWorker(circum, nc, relations, allStyleElems,
+                        Math.max(20, relations.size() / THREAD_POOL.getParallelism() / 3), styles));
+                THREAD_POOL.invoke(new ComputeStyleListWorker(circum, nc, new CompositeList<>(nodes, ways), allStyleElems,
+                        Math.max(100, (nodes.size() + ways.size()) / THREAD_POOL.getParallelism() / 3), styles));
+            } else {
+                new ComputeStyleListWorker(circum, nc, relations, allStyleElems, 0, styles).computeDirectly();
+                new ComputeStyleListWorker(circum, nc, new CompositeList<>(nodes, ways), allStyleElems, 0, styles).computeDirectly();
+            }
 
             if (!benchmark.renderSort()) {
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13649)
@@ -1211,8 +1211,12 @@
     public void zoomChanged() {
         if (!GraphicsEnvironment.isHeadless()) {
-            PointerInfo pointerInfo = MouseInfo.getPointerInfo();
-            if (pointerInfo != null) {
-                Point mp = pointerInfo.getLocation();
-                updateLatLonText(mp.x, mp.y);
+            try {
+                PointerInfo pointerInfo = MouseInfo.getPointerInfo();
+                if (pointerInfo != null) {
+                    Point mp = pointerInfo.getLocation();
+                    updateLatLonText(mp.x, mp.y);
+                }
+            } catch (SecurityException ex) {
+                Logging.log(Logging.LEVEL_ERROR, "Unable to get mouse pointer info", ex);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 13649)
@@ -468,5 +468,9 @@
             MainApplication.getMenu().windowMenu.remove(windowMenuItem);
         }
-        Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+        try {
+            Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to remove AWT event listener", e);
+        }
         Config.getPref().removePreferenceChangeListener(this);
         destroyComponents(this, false);
@@ -977,8 +981,12 @@
     private void dynamicButtonsPropertyChanged() {
         boolean propEnabled = PROP_DYNAMIC_BUTTONS.get();
-        if (propEnabled) {
-            Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_MOTION_EVENT_MASK);
-        } else {
-            Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+        try {
+            if (propEnabled) {
+                Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_MOTION_EVENT_MASK);
+            } else {
+                Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+            }
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to add/remove AWT event listener", e);
         }
         titleBar.buttonsHide.setVisible(propEnabled);
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java	(revision 13649)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.AlphanumComparator;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -100,8 +101,12 @@
                 pm.add(copyMenuComponent(c));
             }
-            PointerInfo pointerInfo = MouseInfo.getPointerInfo();
-            if (pointerInfo != null) {
-                Point p = pointerInfo.getLocation();
-                pm.show(Main.parent, p.x-Main.parent.getX(), p.y-Main.parent.getY());
+            try {
+                PointerInfo pointerInfo = MouseInfo.getPointerInfo();
+                if (pointerInfo != null) {
+                    Point p = pointerInfo.getLocation();
+                    pm.show(Main.parent, p.x-Main.parent.getX(), p.y-Main.parent.getY());
+                }
+            } catch (SecurityException ex) {
+                Logging.log(Logging.LEVEL_ERROR, "Unable to get mouse pointer info", ex);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java	(revision 13649)
@@ -82,5 +82,5 @@
             Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
         } catch (SecurityException ex) {
-            Logging.warn(ex);
+            Logging.log(Logging.LEVEL_WARN, "Unable to add AWT event listener", ex);
         }
         timer = new Timer(0, e -> {
@@ -113,5 +113,5 @@
             Toolkit.getDefaultToolkit().removeAWTEventListener(this);
         } catch (SecurityException ex) {
-            Logging.warn(ex);
+            Logging.log(Logging.LEVEL_WARN, "Unable to remove AWT event listener", ex);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java	(revision 13649)
@@ -44,9 +44,18 @@
     public JosmImageView(Element elem) throws NoSuchFieldException {
         super(elem);
-        imageField = ImageView.class.getDeclaredField("image");
-        stateField = ImageView.class.getDeclaredField("state");
-        widthField = ImageView.class.getDeclaredField("width");
-        heightField = ImageView.class.getDeclaredField("height");
+        imageField = getDeclaredField("image");
+        stateField = getDeclaredField("state");
+        widthField = getDeclaredField("width");
+        heightField = getDeclaredField("height");
         Utils.setObjectsAccessible(imageField, stateField, widthField, heightField);
+    }
+
+    private static Field getDeclaredField(String name) throws NoSuchFieldException {
+        try {
+            return ImageView.class.getDeclaredField(name);
+        } catch (SecurityException e) {
+            Logging.log(Logging.LEVEL_ERROR, "Unable to access field by reflection", e);
+            return null;
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java	(revision 13649)
@@ -72,5 +72,5 @@
         try {
             return Class.forName("sun.security.x509.GeneralName") != null;
-        } catch (ClassNotFoundException e) {
+        } catch (ClassNotFoundException | SecurityException e) {
             Logging.trace(e);
             return false;
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 13648)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 13649)
@@ -1547,5 +1547,7 @@
             AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
                 for (AccessibleObject o : objects) {
-                    o.setAccessible(true);
+                    if (o != null) {
+                        o.setAccessible(true);
+                    }
                 }
                 return null;
