【问题标题】:How to add native dependencies to in java project using gradle如何使用 gradle 在 java 项目中添加本机依赖项
【发布时间】:2017-02-19 14:41:38
【问题描述】:

我正在使用 opencv 进行项目。我已经成功地为 macOS 平台创建了所需的 jar 和本机库。我现在想在我的 java 项目中使用它。我正在使用 gradle 进行构建和依赖管理。我在项目的 lib 文件夹中添加了 jar 和本机依赖项。

build.gradle

group 'com.udaykale'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile(
            files('lib/opencv-320.jar')
    )
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

System.setProperty("java.library.path", "lib")

我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java320 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at com.udaykale.imageeditor.Main.<clinit>(Main.java:13)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)

我了解本机库在运行时不可见。如何更改我的 gradle 配置来处理这个问题?

【问题讨论】:

    标签: java opencv gradle java-native-interface build.gradle


    【解决方案1】:

    使用 maven 本地安装 opencv-320.jar 文件并将其用作 build.gradle 中的依赖项。要本地安装工件,请使用以下命令。相应地指定版本、组 ID 和工件 ID。

    mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> 
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=jar
    

    还将本地存储库添加到 build.gradle

    repositories {
     mavenLocal()
    }
    

    然后是依赖

    dependencies {
     compile "<group-id>:<artifact-id>:<version>"
    }
    

    【讨论】:

    • 还是同样的错误。它无法找到本机依赖项。
    • 编译是否正确?此外,您是否在库中使用了特定于 mac OS 的代码?如果是,您的代码取决于平台
    • 此替代解决方案与从本地文件中提取相同,但使用 mavenLocal()
    猜你喜欢
    • 2014-09-21
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-03-17
    • 2023-02-06
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多