Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当库中有每个平台的文件时,Java应用程序跨平台的最佳方式是什么?_Java_Platform_Chilkat - Fatal编程技术网

当库中有每个平台的文件时,Java应用程序跨平台的最佳方式是什么?

当库中有每个平台的文件时,Java应用程序跨平台的最佳方式是什么?,java,platform,chilkat,Java,Platform,Chilkat,我通常使用chilkat库()仅在windows中开发。但是这个库有每个平台的每个库文件,今天我必须跨平台完成它 示例 Windows x64使用win64.dll Windows x84使用win32.dll Linux x64使用linux64.so Linux x32使用linux32.so 最大OSX使用OSX.jnilib 这是我在仅使用windows时包含chilkat库的源代码 static { try { System.loadLibrary("lib

我通常使用chilkat库()仅在windows中开发。但是这个库有每个平台的每个库文件,今天我必须跨平台完成它

示例

  • Windows x64使用win64.dll
  • Windows x84使用win32.dll
  • Linux x64使用linux64.so
  • Linux x32使用linux32.so
  • 最大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。但是这个问题我指的是如何包含每个平台运行的每个库文件。

您可以使用JARSpile并为许多平台创建多个JAR

您可以使用
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\u ARCHITECTURE
环境变量,当在x64位进程状态下运行时,该变量应返回
AMD64

,抱歉混淆。我知道如何在运行时查找os.name。但是这个问题我的意思是如何包含每个平台上运行的每个库文件。包括所有的库文件,根据操作系统加载所需的库文件…你的意思是,我可以在Mac上使用“System.loadLibrary”(“lib/osx.jnilib”);在Linux上使用“System.loadLibrary”(“lib/linux64.so”);,什么时候知道操作系统名在运行?我会,但那是我。您可以设置单独的“发行版”,其中只包含所需的库,但我会使用于加载它们的代码相同