From fc9c029ec720f7402429dc0b21fcea29fbc71359 Mon Sep 17 00:00:00 2001 From: hades Date: Wed, 25 Mar 2020 19:45:56 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-28368=20=E6=AD=BB=E9=94=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20=E5=B8=B8=E9=87=8F=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/os/impl/SupportOSImpl.java | 14 ++++++++++ .../resources/com/fr/design/icon/logo.png | Bin 0 -> 2478 bytes .../src/main/java/com/fr/start/Designer.java | 4 ++- .../com/fr/start/DesignerJavaRuntime.java | 26 ++++++++++++++++-- 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 designer-base/src/main/resources/com/fr/design/icon/logo.png diff --git a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java index 2518ef57c5..f6c0e30549 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java @@ -83,6 +83,20 @@ public enum SupportOSImpl implements SupportOS { public boolean support() { return OperatingSystem.isMacos(); } + }, + + NON_GUARDIAN_START { + @Override + public boolean support() { + return OperatingSystem.isLinux() || Arch.getArch() == Arch.ARM; + } + }, + + DOCK_ICON { + @Override + public boolean support() { + return OperatingSystem.isMacos(); + } } } diff --git a/designer-base/src/main/resources/com/fr/design/icon/logo.png b/designer-base/src/main/resources/com/fr/design/icon/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c7d8b24d0c6dc5c2792e5749f70a2e1b3e54b5 GIT binary patch literal 2478 zcmb_eX;_n27CuQZp~zw>DhLvkQE)3*6tocd#JJ!Z6;T0Md{hun+)yBpd}9@?&L~5b zT53$j(UGDBt1JRSqKH;eK?H#ygoq+2A#4(|k=`5U&-BrM{c)f3e&^itp5<=e_nbA$ zEX*dE0f0roa`t)v3W5|cr6Uo#KW8Vv7YPCEMS+P@MJp@bA;D47KW)Y0zY~oa$B$f_ za(; zlRg?cm-HG=>7t0Fq1J)j`$axG778baiz6FXFqQAy(bN(bcfA+gyOLIQT`)7RJAQRl zEz;)d5+Z^bhKPN+{8HN+$}4;NC?bt6FfmfI=0ixi>f{E!_Xh6~;OvGjx3$kE>wEsW zEvG`Dxx*l13N}X@7zV%U8k@?Ys`{5NX(Y9(vTbv2YIEaCL>H zFPM<64j+D$#S}bmIqS#+Q}7P1I$UIXK76L14#vS!JDq{G$$a(tli1b$?r?wI$qnTq z22dp?!WXeodZ~pU;&2I5id&}u= zLE3CVvxFrkq7<=MPA890YkO1o+@gqbpx{PXnmwE_m7tAf;b~-1{^JgvyhyEG<7OWR zu2bQS)DTn}bDbhO4hOSN*~NhCY`7yHWIz?&sXRKz$nyMs+9Wt(M$8KFsK+_^ZuvG& zge?c_w$Ln4DiSjSTnFq3&nTmMGu0fHRG9QpIpEr7M-)XP?X4*AvX}=pDo4p~$7zS8?~dv8GTl=%>X$sR0wE3MnIJh!9^vNFH19w`)Ov?4uycSa8 zPD5A4I5g0;@mT=2odU}BrUgPly~)pIs(ApSoYa)TF#rViG(qFfpwj#^>EIlpoj(tS zvj%YbYXr`MiiXoCfNeB7HdGSXJ|WNr36O!j{u+U*`Tu5;sd<7qp5JzRXGa`RT|n3J zf5($6Em{KOaH0?)!VacrkZ61ce7e7X?l?ryh|5|##6r|&2k@8})Mx6JVctkemki5s zD(i?ZktANOBxAAS?gh$_8{PoNxpa31l1_1IOaY6yNxU5s5Fl#96ut}0v8i({8Een2 z!5gL@x;h(i>i1Z*TR45E-nC>DR+uO*Z{Lfj6SWV>^h)^#1mW)2l+oQDkC9R`p2P}& z&jSe`ToEA8T`?Rs+)|l)pzOXNYp{{c(udpLwnWIO#~Tc{?a(XcbpM&(!x|jmxca%Q zqw}n`2B&SRrPhjDurtR{W*GZj2hxGRuU01hpq29R$8W*5=cOr1%prO@mS3SXPseov zJEfP;do%RnV?7C}N|^vZH#ouqjgh*(_-C0K&*i8#@(t3qHe&(h*)`&((T`Y=rRy}@ z9%wgqY;L$p-y8iuI(4)1>NC}aNVMMX_I4J{mAyK~Y`&Ky!1o4}u{Hl;r~{Lx)EY zbm7+@z$cOx#1Jk!8@wvkH(&}FY zVeYj6lGhW4&M>=E1~w(DV!efed05xPe=bhg9=SKy!@==fZ+YX4?J+z2Y-7-gG51ns z>VgkM?oC0DZ82MP_$~)6mp3o^?fq4m{61;p)%4u5iQe5;==K0j!-e|Ri#0BWg0`^T zZ)S`|7Zv%W_f`G`8oy+u`03-&t*l^Kc?oY}`vrhk)Y?@8h1=TmC-U90tlr)}V}5Gm z`)r1;mMmCTC~{|=0p3sBpWwo>5Nmaz0i+Hs5o+yW5W+Ac|JG9KH_h*F{(TA b<=S4uzIAu2m_gHz;`RkBS;Nlrk2vxN5SNVE literal 0 HcmV?d00001 diff --git a/designer-realize/src/main/java/com/fr/start/Designer.java b/designer-realize/src/main/java/com/fr/start/Designer.java index fb974da986..1f8d181ce3 100644 --- a/designer-realize/src/main/java/com/fr/start/Designer.java +++ b/designer-realize/src/main/java/com/fr/start/Designer.java @@ -1,5 +1,6 @@ package com.fr.start; +import com.fr.design.os.impl.SupportOSImpl; import com.fr.log.FineLoggerFactory; /** @@ -14,7 +15,8 @@ public class Designer { public static void main(String[] args) { try { - if (DesignerJavaRuntime.getInstance().isInValidVmOptions()) { + if (DesignerJavaRuntime.getInstance().isInValidVmOptions() + || SupportOSImpl.NON_GUARDIAN_START.support()) { runNonGuardianDesigner(args); } else { // 创建进程 diff --git a/designer-realize/src/main/java/com/fr/start/DesignerJavaRuntime.java b/designer-realize/src/main/java/com/fr/start/DesignerJavaRuntime.java index c264e79cb0..ed7553620a 100644 --- a/designer-realize/src/main/java/com/fr/start/DesignerJavaRuntime.java +++ b/designer-realize/src/main/java/com/fr/start/DesignerJavaRuntime.java @@ -1,12 +1,18 @@ package com.fr.start; +import com.fr.design.os.impl.SupportOSImpl; import com.fr.general.ComparatorUtils; +import com.fr.general.IOUtils; import com.fr.process.engine.core.AbstractJavaRuntime; +import com.fr.stable.ArrayUtils; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.os.OperatingSystem; -import java.util.Set; +import javax.imageio.ImageIO; +import java.io.File; +import java.io.IOException; + /** * 设计器Java运行环境 @@ -23,8 +29,20 @@ public class DesignerJavaRuntime extends AbstractJavaRuntime { private static final String JAVA_EXEC = "java"; private static final String WIN_JRE_BIN = StableUtils.pathJoin("jre", "bin"); private static final String MAC_JRE_BIN = StableUtils.pathJoin("jre.bundle", "Contents", "Home", "jre", "bin"); + private static final String BIN_HOME = StableUtils.pathJoin(StableUtils.getInstallHome(), "bin"); + private static final String LOGO_PATH = StableUtils.pathJoin(BIN_HOME, "logo.png"); + private static final String DOCK_OPTIONS = "-Xdock:icon=" + StableUtils.pathJoin(StableUtils.getInstallHome(), "bin", "logo.png"); private static final String[] DEBUG_OPTIONS = new String[]{"-Dfile.encoding=UTF-8", "-Xmx2048m"}; + static { + if (SupportOSImpl.DOCK_ICON.support()) { + try { + ImageIO.write(IOUtils.readImage("com/fr/design/icon/logo.png"), "png", new File(LOGO_PATH)); + } catch (IOException ignore) { + } + } + } + private static final DesignerJavaRuntime INSTANCE = new DesignerJavaRuntime(); public static DesignerJavaRuntime getInstance() { @@ -79,7 +97,11 @@ public class DesignerJavaRuntime extends AbstractJavaRuntime { @Override public String[] getJvmOptions() { if (isInstallVersion()) { - return super.getJvmOptions(); + String[] options = super.getJvmOptions(); + if (SupportOSImpl.DOCK_ICON.support()) { + options = ArrayUtils.add(options, DOCK_OPTIONS); + } + return options; } else { return DEBUG_OPTIONS; }