【发布时间】:2015-09-02 23:58:44
【问题描述】:
我正在使用 sqlite4java 开始一个简单的 java 测试项目并使用 java 构建。
我可以轻松下载核心 sqlite4java 库,但我不确定让 gradle 下载本机库并将它们放在正确位置的最佳(任何!)方法。
这是我的 build.gradle 文件:
apply plugin: 'java'
/* We use Java 1.7 */
sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '1.0'
repositories {
mavenCentral()
}
sourceSets {
main {
java.srcDir 'src'
output.classesDir = 'build/main'
}
test {
java.srcDir 'test'
output.classesDir = 'build/test'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile "com.almworks.sqlite4java:sqlite4java:1.0.392"
compile "com.almworks.sqlite4java:libsqlite4java-osx:1.0.392"
}
但是当我运行一个简单的测试时,我得到:
TestTest > testSqlite4Basic FAILED
com.almworks.sqlite4java.SQLiteException at TestTest.java:15
Caused by: java.lang.UnsatisfiedLinkError at TestTest.java:15
(我在 IntelliJ 中构建,但正在使用 gradle 构建选项 - 所以我不认为 ItelliJ 在运行测试时填充了类路径......)
我很确定我第一次尝试构建时收到了一些关于无法解压缩 libsqlite4java-osx ZIP 文件的消息(并不奇怪,因为 maven Central 说它是一个 dylib 文件)。
我需要做什么才能让 gradle 做正确的事?
ASIDE:我可以通过手动将下载的 .dylib 从 maven 缓存复制到我的 java.library.path 中列出的某个位置来运行代码(我认为我使用了 $HOME/Library/Java/Extensions on我的苹果电脑)。但这似乎与将所有设置和依赖项打包在 .gradle 文件中的全部意义相悖,并且不会让我以后轻松分发任何东西。
【问题讨论】:
-
看起来有一些东西几乎可以为 android gradle - github.com/nhachicha/android-native-dependencies 但这似乎不支持 OS-X。而且我不确定在 gradle 的 android 版本之外使用它是否还有其他问题。
-
对不起,我无法立即解决问题,但我确实发现这表明你并不孤单,这不是特定于 sqlite 的discuss.gradle.org/t/…
标签: java gradle sqlite4java