From c72ee30a25458f633ab560c0eb9135399b7dc3b5 Mon Sep 17 00:00:00 2001 From: Bill Culp Date: Mon, 10 Feb 2020 18:17:20 -0800 Subject: [PATCH 1/6] fix: Illegal reflective access operation on mac --- .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 09e6d5127..69e3e7744 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -191,16 +191,10 @@ public void uninitialize() { private BasicLookAndFeel getBase() { if( base == null ) { if( SystemInfo.IS_MAC ) { - // use Mac Aqua LaF as base - String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; - try { - base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).newInstance(); - } catch( Exception ex ) { - LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); - throw new IllegalStateException(); - } - } else + base = (BasicLookAndFeel) UIManager.getLookAndFeel(); + } else { base = new MetalLookAndFeel(); + } } return base; } From 3bf09ee731159be52b918b1367f318d8d2fcc616 Mon Sep 17 00:00:00 2001 From: Bill Culp Date: Tue, 11 Feb 2020 15:00:28 -0800 Subject: [PATCH 2/6] fix #60 Illegal reflective access operation on mac --- .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index ae79de828..61ecf7db0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -191,8 +191,15 @@ public void uninitialize() { private BasicLookAndFeel getBase() { if( base == null ) { if( SystemInfo.IS_MAC ) { - base = (BasicLookAndFeel) UIManager.getLookAndFeel(); - } else { + // use Mac Aqua LaF as base + String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; + try { + base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructors()[0].newInstance(); + } catch( Exception ex ) { + LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); + throw new IllegalStateException(); + } + } else base = new MetalLookAndFeel(); } } From 00bb13c23030cd0d4bd3a6548268d9395cd7df18 Mon Sep 17 00:00:00 2001 From: Bill Culp Date: Tue, 11 Feb 2020 15:05:22 -0800 Subject: [PATCH 3/6] fix #60 just use getDeclaredConstructor() --- flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 61ecf7db0..a9bb22905 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -194,7 +194,7 @@ private BasicLookAndFeel getBase() { // use Mac Aqua LaF as base String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; try { - base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructors()[0].newInstance(); + base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructor().newInstance(); } catch( Exception ex ) { LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); throw new IllegalStateException(); From 31b0cf396e729dc482bdf516ac145f8112cb68ce Mon Sep 17 00:00:00 2001 From: Bill Culp Date: Tue, 11 Feb 2020 15:10:58 -0800 Subject: [PATCH 4/6] fix #60 fix typo --- flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index a9bb22905..7f2d042a6 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -199,7 +199,7 @@ private BasicLookAndFeel getBase() { LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); throw new IllegalStateException(); } - } else + } else { base = new MetalLookAndFeel(); } } From b1a7983f1853c0b3ac3b2ff53bfee2ede8a6bcf1 Mon Sep 17 00:00:00 2001 From: smile atom Date: Wed, 12 Feb 2020 18:46:39 -0800 Subject: [PATCH 5/6] fix: #60 Illegal reflective access operation on mac --- .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 7f2d042a6..68c6f90dd 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -190,11 +190,14 @@ public void uninitialize() { */ private BasicLookAndFeel getBase() { if( base == null ) { - if( SystemInfo.IS_MAC ) { - // use Mac Aqua LaF as base + if( SystemInfo.IS_MAC) { String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; try { - base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructor().newInstance(); + if (SystemInfo.IS_JAVA_9_OR_LATER) { + base = (BasicLookAndFeel) UIManager.createLookAndFeel("Mac OS X"); + } else { + base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructor().newInstance(); + } } catch( Exception ex ) { LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); throw new IllegalStateException(); From f2ddfadc9d59e5a59f4c84c1fbbff17020784da8 Mon Sep 17 00:00:00 2001 From: smile atom Date: Wed, 12 Feb 2020 19:01:35 -0800 Subject: [PATCH 6/6] fix: #60 should compile on JDK 8 --- flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 68c6f90dd..0179fa7a9 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -29,6 +29,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.util.List; import java.util.function.Consumer; import java.util.logging.Level; @@ -194,7 +195,8 @@ private BasicLookAndFeel getBase() { String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; try { if (SystemInfo.IS_JAVA_9_OR_LATER) { - base = (BasicLookAndFeel) UIManager.createLookAndFeel("Mac OS X"); + Method m = UIManager.class.getDeclaredMethod("createLookAndFeel", String.class); + base = (BasicLookAndFeel) m.invoke(UIManager.class, "Mac OS X"); } else { base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructor().newInstance(); }