2

我通常使用 chilkat 库 ( http://www.chilkatsoft.com/java.asp ) 仅使用 windows 开发。但是这个库每个平台都有每个库文件,今天我必须跨平台做。

例子

  • Windows x64 使用 win64.dll
  • Windows x84 使用 win32.dll
  • Linux x64 使用 linux64.so
  • Linux x32 使用 linux32.so
  • Max OSX 使用 osx.jnilib

这是我仅在使用 Windows 时包含 chilkat 库的源代码。

static {
    try {
        System.loadLibrary("lib/win64");
    } catch (UnsatisfiedLinkError e) {
        try {
            System.loadLibrary("lib/win32");
        } catch (UnsatisfiedLinkError e2) {
            System.err.println("Native code library failed to load.\n" + e2);
            System.exit(1);
        }
    }
}

现在我不知道。如何在跨平台的 java 应用程序中包含每个库文件?

请指导我的最佳方式。

谢谢你。

Edit1:很抱歉造成混淆。我知道如何在运行时找到 os.name。但是这个问题我的意思是如何包含每个库文件以运行每个平台。

4

2 回答 2

1

您可以使用 JarSplice 并为许多平台创建多个 jar。http://ninjacave.com/jarsplice

于 2014-06-20T07:01:49.270 回答
1

您可以使用该os.name System属性来确定您正在运行的操作系统...

 String os = System.getProperty("os.name");
 if (os.startsWith("Mac")) {
     // Running on Mac
 } else if (os.startsWith("Windows")) {
     // Running on Windows
 }

抱歉,没有可供测试的 Linux 机器;)

在 Windows 上,您可以尝试测试PROCESSOR_ARCHITECTURE环境变量,当在 x64 位进程状态下运行时,它应该返回AMD64

于 2014-06-20T07:02:26.177 回答