【发布时间】:2015-07-25 06:09:19
【问题描述】:
我正在尝试通过我的 Spring Boot 项目上的 gradle 将 .dll 文件添加到“java.library.path”系统属性。我在 STS 上使用 Gradle 2.1。 这是我的 build.gradle 中的一小段凹槽代码:
tasks.withType(JavaCompile) {
systemProperty "java.library.path", file("./src/main/resources/META-INF/opencv-2.4.9/windows_bin/x64")
}
我收到以下错误:
找不到参数 [java.library.path,
D:\GitHub\TFG_1\GuiaTV\src\main\resources\META-INF\opencv-2.4.9\windows_bin\x64] on root project 'GuiaTV'] 的方法 systemProperty()
那条路径确实存在,所以我不知道问题出在哪里。
有什么帮助吗?谢谢!
更新 1:
@Amnon 肖特 我尝试做的是将本机库(.dll)添加到项目中。我从一些网站(例如,http://zouxifeng.github.io/2014/07/17/add-system-property-to-spring-boot.html、https://github.com/cjstehno/coffeaelectronica/wiki/Going-Native-with-Gradle)获得了这个想法。
第一个是使用你建议的:
tasks.withType(JavaExec) {
systemProperty "java.library.path", file("./libs")
}
第二个正在使用:
run {
systemProperty 'java.library.path', file( 'build/natives/windows' )
}
它们都不适合我。 第一个(使用 JavaExec)未能通过 gradle 测试:
java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
如果您跟踪跟踪,它会在运行时崩溃:System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
第二个在 gradle build 上失败,并显示以下消息:
Could not find method run() for arguments [build_24sfpo0st6dokeq7fn3ad7r34$_run_closure7@2652c3da] on root project 'GuiaTV'.
幸运的是,您确切地知道我要达到的目标,并且可以解决我的问题。
感谢您的关注!
更新 2:
最后,我最终将这些行添加到我的 build.gradle 脚本中:
// The following makes "gradle build", "gradle test" work
test {
jvmArgs = ['-Djava.library.path=./src/main/resources/META-INF/opencv-2.4.9/windows_bin/x64']
}
// Thw following makes "gradle run" work
run {
jvmArgs = ['-Djava.library.path=./src/main/resources/META-INF/opencv-2.4.9/windows_bin/x64']
}
顺便说一句,我也在使用“spring-boot”gradle 插件。这就是 run 任务的来源。 所以,我可以成功执行“gradle build”、“gradle test”和“gradle run”。也就是说,正确添加了本机库。 但是,由于我也在使用“eclipse”gradle 插件,所以我想通过执行“gradle eclipse”来添加本机库。相反,我必须在 Eclipse 上手动创建库,并将其添加到我的项目中。
感谢@Amnon 的合作。如果我找到它,我将发布一个新的解决方案。
【问题讨论】:
标签: gradle spring-boot