首页 > 解决方案 > 无法在 java 中加载/引用相应的 dll 和 jar

问题描述

我有几个 SDK,当安装在 Windows 上时,会在 C://Program Files//SDK Name//folders and files.

我在 setup 类的 main 方法中有一个 switch case,根据提供 SDK 名称的字符串输入,我需要从上面指定的安装位置加载/引用该 SDK 的相应 dll 和 jar。

由于这些 dll 和 jar 可以随着每个新的 SDK 构建而改变,我希望从指定的安装位置选择它们,而不是将它们包含在我的项目中。

您能否让我知道如何在 JAVA 中完成此操作(Windows 10、netbeans 11、jdk 13)。我尝试了以下方法,但没有奏效:

在setup类的main方法里面:

switch (sdkName.toLowerCase()) {
    case "A": {
        A sdkA= new A();
        //Class for each SDK. How to Load dlls and jars from this class or within this case statement ?
        System.load("above path to native library/dll") //Doesn't WORK gives java.lang.unsatisfiedLink error
        break;
    }
    case "B": {
        B sdkB= new B();
        break;
    }
    case "C":{
        C sdkC= new C();
        break;
    }
}

我尝试使用 maven 并在 pom.xml 中添加了以下内容。编译但在运行时我得到 NoClassDefFound 并且不确定这是否是正确的方法,因为我仍然必须为所有 sdk 中的所有 jar 和 dll 执行此操作。

<dependency>
    <groupId>com.crossmatch.biobase</groupId>
    <artifactId>BioBase</artifactId>
    <type>jar</type>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>C:\\Program Files\\Crossmatch\\SDKA\\Lib\\a.jar</systemPath>
</dependency>

尝试通过项目文件夹和目标文件夹中的类路径传递 jar 文件:

java -cp "C:\Program Files\SDK\a.jar,MyApp-1.0-SNAPSHOT.jar" com.company.classNamewiwthMainMethodSetUpClass xmlFileThatReadsTheSDKNameandOTherSDKSpecificData

在这里我得到错误:

无法找到或加载主类.. ClassNotFoundException

标签: javadlljarclassnotfoundexceptionunsatisfiedlinkerror

解决方案


推荐阅读