Java依赖操作系统?

时间:2013-10-07 07:08:42

标签: java preprocessor native

所以,我有很多基于java的项目。它使用了很多本地库。所有这些(项目/库)都在同一个存储库中。每个操作系统的corse都是不同的dll / jar 我们的想法是根据操作系统改变哪些进口。那么有可能不使用Maven,Gradle .. e.t.c?我认为它看起来像使用c ++预处理器..

UPT 对于错误信息感到抱歉,我们正在使用Ant ..所以很高兴知道有任何解决方案吗?

2 个答案:

答案 0 :(得分:1)

构建工具的关键在于我们不必自己处理各种依赖关系。所以我仍然建议您查看Maven构建配置文件。

例如

<profiles>
<profile>
<activation>
  <os>
    <name>Windows XP</name>
    <family>Windows</family>
    <arch>x86</arch>
    <version>5.1.2600</version>
  </os>
</activation>
...
</profile>
</profiles>

另请查看以下http://maven.apache.org/guides/introduction/introduction-to-profiles.html

答案 1 :(得分:0)

理想的工作是使用Maven定义所有操作系统所需的所有依赖项。因此,您的项目将包含每个操作系统所需的所有库。 为了动态地在代码中使用lib,您可以使用以下指令以编程方式检测os:

  System.getProperty("os.name")

您可以定义一个开关循环或“if系列”作为libs调用的示例 以下是您可以编辑的示例:

public class OSValidator {

private static String OS = System.getProperty("os.name").toLowerCase();

public static void main(String[] args) {

    System.out.println(OS);

    if (isWindows()) {
        System.out.println("This is Windows");
    } else if (isMac()) {
        System.out.println("This is Mac");
    } else if (isUnix()) {
        System.out.println("This is Unix or Linux");
    } else if (isSolaris()) {
        System.out.println("This is Solaris");
    } else {
        System.out.println("Your OS is not support!!");
    }
}

public static boolean isWindows() {
    return (OS.indexOf("win") >= 0);
}

public static boolean isMac() {
    return (OS.indexOf("mac") >= 0);
}

public static boolean isUnix() {
    return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );
}

public static boolean isSolaris() {
    return (OS.indexOf("sunos") >= 0);
}

}