2017-02-19 35 views
0

Я работаю над проектом, используя opencv. Я успешно создал необходимые jar и собственные libs для платформы macOS. Теперь я хочу использовать это в своем проекте java. Я использую gradle для управления построением и зависимостями. Я добавил jar и родную зависимость в папке lib моего проекта.Как добавить собственные зависимости в проект java с помощью gradle

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, чтобы справиться с этим?

ответ

0

Локальная установка файла opencv-320.jar с помощью maven и использование его в качестве зависимости в вашем build.gradle. Для локальной установки артефакт использовать следующую команду. Укажите соответственно версию, идентификатор группы и идентификатор артефакта.

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>" 
} 
+0

Еще та же ошибка. Его невозможно найти родную зависимость. – uday

+0

Правильно ли он компилируется? А также, вы использовали код конкретной ОС Mac в своей библиотеке? Если да, ваш код зависит от платформы –

+0

Это альтернативное решение такое же, как и вытаскивание из локального файла, за исключением использования 'mavenLocal()' – chenrui