问题标签 [sqlite4java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6563 浏览

java - 如何设置一个使用 sqlite4java 的简单 gradle 项目?

我正在使用 sqlite4java 开始一个简单的 java 测试项目并使用 java 构建。

我可以轻松下载核心 sqlite4java 库,但我不确定让 gradle 下载本机库并将它们放在正确位置的最佳(任何!)方法。

这是我的 build.gradle 文件:

但是当我运行一个简单的测试时,我得到:

(我是从 IntelliJ 内部构建的,但我使用的是 gradle 构建选项 - 所以我认为运行测试时不是 ItelliJ 填充了类路径......)

我很确定我第一次尝试构建时收到了一些关于无法解压缩 libsqlite4java-osx ZIP 文件的消息(并不奇怪,因为 maven Central 说它是一个 dylib 文件)。

我需要做什么才能让 gradle 做正确的事?

旁白:我可以通过手动将从 maven 缓存中下载的内容复制到我(我认为我在我的 mac 上使用过).dylib中列出的某个地方来运行代码。但这似乎与将所有设置和依赖项打包在文件中的全部意义相反,并且不会让我以后轻松分发任何东西。java.library.path$HOME/Library/Java/Extensions.gradle

0 投票
1 回答
32 浏览

swing - 打包的可执行 jar 文件不使用包含的依赖库 (sqlite4Java)

我在使用 NetBeans IDE 和 Java Swing 构建的打包程序时遇到问题。当项目是从 netbeans 构建时,它会将程序所依赖的所有库复制到文件夹 dist 中名为 lib 的文件夹中,包括我使用的 sqlite4java API。Dist 还包含可执行的 .jar 文件。当文件打开时,正常的 jFrame 打开并且程序运行良好,直到调用 SQLiteConnection。不会返回任何错误,但程序总是无法超过可执行 .jar 文件中的那个点。但是,它在 NetBeans IDE 中运行良好。

该程序显示了一个文本区域,并且使用了一个swing worker 来不断地在文本区域中添加从数据库中获取的新字符串。

代码段中未包含的所有变量均已正确实例化。

这是有问题的代码:

第一个字符串“Reached”总是附加到文本区域,但第二个字符串“Reached2”永远不会添加。仅当我在 NetBeans 中构建程序并将其打包为包含依赖库的可分发 .jar 文件时,才会出现此问题。该程序在 NetBeans IDE 中运行良好。

0 投票
1 回答
2945 浏览

eclipse - 如何让 Gradle 为 Eclipse 生成 java.library.path

我有一个使用 sqlite4java 的 gradle 项目,我在 eclipse 中工作。

我的问题是,当我让 gradle 生成 eclipse 项目文件时,项目类路径在类路径而不是 java.library.path 上包含 sqlite4java 的本机库,这导致 eclipse 无法构建我的项目,因为它抱怨本机库不是格式良好的 zip 文件。此外,当我从类路径中手动删除本机库时,当我运行测试或应用程序时,它们会出错,因为它们无法加载 sqlite4java 本机库。

如何让 gradle 在 eclipse 中为 sqlite4java 设置 java.library.path,以便我的代码在 eclipse 中兼容并运行?

0 投票
2 回答
2014 浏览

java - java.lang.UnsatisfiedLinkError:java.library.path 中没有 sqlite4java-win32-x64-1.0.392 - 基于 gradle 的 javafx

我正在使用netbeans ide(win7)开发一个基于gradle的小型javafx项目。一切正常,直到我包含 cloudant-sync 和 sqlite4java,现在每当我运行项目时我都会得到 UnsatisfiedLinkError。请问我该如何解决这个问题。

java.lang.UnsatisfiedLinkError:java.library.path 中没有 sqlite4java-win32-x64-1.0.392

请参阅下面的 gradle.build 和控制台输出:

gradle.build

应用插件:'java'

sourceCompatibility = '1.8' [compileJava, compileTestJava] .options .encoding = 'UTF-8'

// NetBeans 将根据“mainClass”属性自动添加“运行”和“调试”任务。但是,您可以在执行 // 任务之前通过传递“-PmainClass=" 参数来定义属性。// // 但是请注意,如果您愿意,您可以定义自己的“运行”和“调试”任务。在这种情况下,NetBeans 不会添加这些任务,但您可以依赖 // 您自己的实现。if (!hasProperty('mainClass')) { ext.mainClass = 'falcon3.Main' }

存储库 { mavenCentral() }

依赖项{编译'com.jfoenix:jfoenix:1.1.0'编译组:'com.cloudant',名称:'cloudant-sync-datastore-javase',版本:'2.0.0'编译组:'com.almworks。 sqlite4java',名称:'sqlite4java',版本:'1.0.392' 编译'com.aquafx-project:aquafx:0.2' testCompile 组:'junit',名称:'junit',版本:'4.10' }

控制台输出

执行:gradle run 参数:[-c, C:\Users\???\Documents\NetBeansProjects\Falcon3\settings.gradle]

_runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) ... 1 更多原因:java.lang.IllegalStateException:无法打开数据库。在 com.cloudant.sync.internal.sqlite.sqlite4java.SQLiteWrapper.createNewConnection(SQLiteWrapper.java:92) 在 com.cloudant.sync.internal.sqlite.sqlite4java.SQLiteWrapper.getConnection(SQLiteWrapper.java:73) 在 com.cloudant .sync.internal.sqlite.sqlite4java.SQLiteWrapper.isOpen(SQLiteWrapper.java:121) 在 com.cloudant.sync.internal.sqlite.sqlite4java.SQLiteWrapper.beginTransaction(SQLiteWrapper.java:126) 在 com.cloudant.sync.internal .sqlite.SQLDatabaseFactory.isFtsAvailable(SQLDatabaseFactory.java:52) at com.cloudant.sync.internal.sqlite.SQLDatabaseFactory.(SQLDatabaseFactory.java:45) ... 15 更多原因:com.almworks。

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:运行”执行失败。

    Process 'command 'C:\Program Files\Java\jdk1.8.0_102\bin\java.exe'' 以非零退出值 1 结束

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

构建失败

总时间:2.578 秒

构建失败(请参阅堆栈跟踪的通知窗口):gradle run

0 投票
1 回答
239 浏览

android - SQLite / FTS3 / FTS4 / Android中撇号的自定义令牌字符?

我的 Android 应用程序包含一个 SQLite 表(全文搜索/FTS3),其中包含以下数据:

格林产品

在应用程序中,当用户搜索Green's Product时,会找到匹配项。但是当用户搜索Greens Product(即,没有撇号)时,没有匹配项。

无论用户是否输入撇号,我都需要退回产品。

所以我一直在阅读有关 FTS3 标记器的文档,这表明我需要在tokenchars参数中指定撇号。

所以我尝试像这样重新创建我的表:

CREATE VIRTUAL TABLE products USING fts3 (product_name TEXT, tokenize=simple "tokenchars='");

但是当用户搜索Greens Product时仍然没有匹配。

我也试过:

CREATE VIRTUAL TABLE products USING fts3 (product_name TEXT, tokenize=simple "tokenchars=''");(双撇号)

CREATE VIRTUAL TABLE products USING fts4 (product_name TEXT, tokenize=simple "tokenchars='");(fts4)

CREATE VIRTUAL TABLE products USING fts4 (product_name TEXT, tokenize=simple "tokenchars=''");(双撇号和 fts4)

但他们似乎都没有为我工作。

我不确定下一步该尝试什么。而且我也不确定我是否会因为 Android 的 SQLite 实现而遇到一些限制。

有没有人有什么建议?