当前位置: 首页 > 面试题库 >

如何设置使用sqlite4java的简单gradle项目?

燕博文
2023-03-14
问题内容

我正在使用sqlite4java启动一个简单的Java测试项目,并使用Java进行构建。

我可以轻松地下载核心sqlite4java库,但是我不确定哪种最好的方式(任意!)来获取下载本地库并将它们放在正确位置的好处。

这是我的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做正确的事情?

旁白
:我可以通过手动.dylib将从Maven缓存中下载的内容复制到我列出的位置中来运行代码java.library.path(以为我$HOME/Library/Java/Extensions在Mac上使用过)。但这似乎与将所有安装程序和依赖项打包到文件中的整个观点背道而驰.gradle,并且以后我也不会轻易分发任何内容。


问题答案:

这是根据斯坦尼斯拉夫的评论的完整答案。

apply plugin: 'java'

/* We use Java 1.8 */
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'

repositories { mavenCentral() }

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

sourceSets {
    main {
        java.srcDir 'src'
        output.classesDir = 'build/main'
    }
    test {
        java.srcDir 'test'
        output.classesDir = 'build/test'
    }
}

/* Copy the native files */
task copyNativeDeps(type: Copy) {
    from (configurations.compile+configurations.testCompile) {
        include "*.dylib"
    }
    into 'build/libs'
}

/* Make sure we setup the tests to actually copy 
 * the native files and set the paths correctly. */
test {
    dependsOn copyNativeDeps
    systemProperty "java.library.path", 'build/libs'
}

并为此运行示例测试源:

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import org.junit.Test;

import java.io.File;

public class SqliteTest {

    @Test public void aTest() throws Exception {
        SQLiteConnection db = new SQLiteConnection(new File("/tmp/database"));
        db.open(true);

        SQLiteStatement st = db.prepare("SELECT name FROM dummy");
        try {
            while(st.step()) {
                System.err.printf("name = %s\n", st.columnString(1));
            }
        } finally {
            st.dispose();
        }
    }
}


 类似资料:
  • 我对kotlin和gradle是新手,试图建立我的第一个项目: 然后得到错误消息“src\main\kotlin\main.kt:(4,4):Unresolved reference:println”。 我从http://kotlinlang.org/docs/reference/using-gradle.html复制的build.gradle文件 我希望标准库是自动包含的--或者我需要在这里添加

  • 本文向大家介绍Spring Boot配置Thymeleaf(gradle)的简单使用,包括了Spring Boot配置Thymeleaf(gradle)的简单使用的使用技巧和注意事项,需要的朋友参考一下 最近项目用到了Spring Boot ,但是在控制器返回html视图并渲染参数的时候,存在了疑问。后面考虑用Thymeleaf ,感觉真的不错,下面分享给大家 总共四步: jar 引入 控制器参数

  • 从gradle maven publish插件的文档中可以清楚地看到,您可以直接在: 但是,似乎取自您正在使用的文件夹的名称。有没有办法明确地设置?

  • 我有以下问题--我用插件创建了一个名为“Spring”的简单Gradle项目。但是当我运行Gradle build和任务并输入http://localhost:8080/spring时,我得到404错误。当然,在构建和服务器启动期间,我没有收到任何错误消息。有Build.Gradle: 我还有一个名为的jsp文件放在中: 和文件放在中: 如您所见,服务器似乎正在成功启动:

  • 我正在使用这个插件: 如何指定不是项目/文件夹名称的artifactId? 我已经用了这个: 但这不是插件使用的。