Java 根据plugin.xml中的os.name显示/隐藏菜单项

Java 根据plugin.xml中的os.name显示/隐藏菜单项,java,eclipse,eclipse-plugin,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,我在plugin.xml中使用这种代码,以便根据操作系统类型显示/隐藏菜单项: <menu label="Help"> <command commandId="org.eclipse.ui.help.aboutAction" style="push"> <visibleWhen checkEnabled="false"> <not> <systemTest pro

我在plugin.xml中使用这种代码,以便根据操作系统类型显示/隐藏菜单项:

<menu label="Help">
    <command commandId="org.eclipse.ui.help.aboutAction" style="push">
        <visibleWhen checkEnabled="false">
            <not>
                <systemTest property="os.name" value="Mac OS X">
                </systemTest>
            </not>
        </visibleWhen>
    </command>
</menu>

问题是,
System.getProperty(“os.name”)
返回的os.name似乎不是很标准化。它可能取决于操作系统版本,特别是Microsoft Windows


我想知道是否有最佳实践

osgi.os环境变量为os定义了一个更明确的值。该值在
org.eclipse.osgi.service.environment.Constants
中定义:

public static final String OS_WIN32 = "win32";
public static final String OS_LINUX = "linux";
public static final String OS_AIX = "aix";
public static final String OS_SOLARIS = "solaris";
public static final String OS_HPUX = "hpux";
public static final String OS_QNX = "qnx";
public static final String OS_MACOSX = "macosx";
public static final String OS_EPOC32 = "epoc32";
public static final String OS_OS400 = "os/400"; 
public static final String OS_OS390 = "os/390"; 
public static final String OS_ZOS = "z/os"; 
public static final String OS_UNKNOWN = "unknown";
注意:尽管其名称(以及
常量
类中的注释),
win32
适用于32位和64位窗口

处理器架构也有
osgi.arch

public static final String ARCH_X86 = "x86";
public static final String ARCH_X86_64 = "x86_64";
public static final String ARCH_PA_RISC = "PA_RISC";
public static final String ARCH_PPC = "ppc";
public static final String ARCH_PPC64 = "ppc64";
public static final String ARCH_SPARC = "sparc";
public static final String ARCH_IA64 = "ia64"; 
public static final String ARCH_IA64_32 = "ia64_32";
最后,
osgi.ws
给出了窗口系统:

public static final String WS_WIN32 = "win32";
public static final String WS_WPF = "wpf"; 
public static final String WS_MOTIF = "motif";
public static final String WS_GTK = "gtk";
public static final String WS_PHOTON = "photon";
public static final String WS_CARBON = "carbon";
public static final String WS_COCOA = "cocoa";
public static final String WS_S60 = "s60";
public static final String WS_UNKNOWN = "unknown";

正是我想要的:-)谢谢!