Build from source with ICU extension
Drus566 opened this issue · 8 comments
Hello!
Please tell me how to compile jdbc-sqlite.jar from sources with additional ICU module?
Thanks in advance!
Have this lib dynamically link against the libsqlite3 with your options.
Have this lib dynamically link against the libsqlite3 with your options.
I didn't quite understand it at the time of compilation jdbc-sqlite ?
Have this lib dynamically link against the libsqlite3 with your options.
I didn't quite understand it at the time of compilation jdbc-sqlite ?
Build sqlite3 first, then link this native code against it.
Have this lib dynamically link against the libsqlite3 with your options.
I didn't quite understand it at the time of compilation jdbc-sqlite ?
Build sqlite3 first, then link this native code against it.
I try build make native
command, but errors
The syntax of the command is incorrect.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 138 100 138 0 0 17 0 0:00:08 0:00:07 0:00:01 29
0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0Warning: Failed to open the file target/classpath/slf4j-api.jar: No such file
Warning: or directory
0 41125 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0
curl: (23) Failure writing output to destination, passed 16384 returned -1
process_begin: CreateProcess(NULL, $JAVA_HOME/bin/javac -cp target/classpath/slf4j-api.jar -sourcepath src/main/java -d lib src/main/java/org/sqlite/util/OSInfo.java, ...) failed.
Makefile.common:22: pipe: Bad file descriptor
process_begin: CreateProcess(NULL, $JAVA_HOME/bin/java -cp lib:target/classpath/slf4j-api.jar org.sqlite.util.OSInfo --os, ...) failed.
Makefile.common:26: pipe: Bad file descriptor
process_begin: CreateProcess(NULL, $JAVA_HOME/bin/java -cp lib:target/classpath/slf4j-api.jar org.sqlite.util.OSInfo --arch, ...) failed.
Makefile.common:29: pipe: Bad file descriptor
File not found - -L
File not found - -NAME
File not found - JNI.H
File not found - -L
File not found - -NAME
File not found - JNI_MD.H
Will build using target: - (detected os: , arch: )
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:24: pipe: No error
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:24: pipe: No error
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:28: pipe: No error
process_begin: CreateProcess(NULL, dirname target/sqlite-amalgamation-/sqlite3.h, ...) failed.
Makefile:28: pipe: No error
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:108: pipe: No error
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:110: pipe: No error
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
process_begin: CreateProcess(NULL, env bash C:\Users\LykovA\Desktop\Workplace\Projects\sqlite-jdbc\amalgamation_version.sh 3.46.1, ...) failed.
Makefile:34: pipe: No such file or directory
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/2024/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/2023/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/2022/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/2021/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/2020/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/sqlite-amalgamation-.zip || \
curl -L --max-redirs 0 -f -otarget/sqlite-3.46.1-amal.zip https://www.sqlite.org/sqlite-amalgamation-3_46_1.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
make: *** [Makefile:34: target/sqlite-3.46.1-amal.zip] Error 22
If you build a project using mvn package
, all ok, but i try load dinamyc library, but this not work
public Application() {
String url = "jdbc:sqlite:example.db";
Connection connection = null;
Properties properties = new Properties();
properties.setProperty("enable_load_extension", String.valueOf(true));
try {
connection = DriverManager.getConnection(url,properties);
Statement sm = connection.createStatement();
// I TRY DIFFERENT VARIANTS
// ResultSet rr = sm.executeQuery("select * from");
// sm.execute("SELECT load_extension('libSqliteIcu64');");
// sm.execute("SELECT load_extension('C:\\Users\\LykovA\\Desktop\\Workplace\\Projects\\untitled1\\dll\\libSqliteIcu64',sqlite3_extension_init);");
String searchName = "%а%";
String sql = "SELECT * FROM users WHERE LOWER(name) LIKE LOWER('" + searchName + "')";
ResultSet rs = sm.executeQuery(sql);
// Обработка результатов
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
// Закрытие ResultSet
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
How i can compile jdbc-sqlite with new native (own-compiled from source code) sqlite.dll ?
I try do this, but get errors, from mvn package
command, errors related to unfound functions
How i can compile jdbc-sqlite with new native (own-compiled from source code) sqlite.dll ? I try do this, but get errors, from
mvn package
command, errors related to unfound functions
you don't need to. You can load your own sqlite.dll
.
How i can compile jdbc-sqlite with new native (own-compiled from source code) sqlite.dll ? I try do this, but get errors, from
mvn package
command, errors related to unfound functionsyou don't need to. You can load your own
sqlite.dll
.
Thank you, but i try this with sqlite with icu extension dll and get error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open_utf8([BI)V
at org.sqlite.core.NativeDB._open_utf8(Native Method)
at org.sqlite.core.NativeDB._open(NativeDB.java:81)
at org.sqlite.core.DB.open(DB.java:216)
at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:287)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:67)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:19)
at org.sqlite.JDBC.createConnection(JDBC.java:106)
at org.sqlite.JDBC.connect(JDBC.java:79)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at Application.<init>(Application.java:23)
at Application.main(Application.java:11)
I do this with compile from source code sqlite dll without icu, but get same error.
But when i get sqlite dll from source code jdbc-sqlite, it worked.
Maybe i missing flag when compile source code? For example. I build from mingw32 for windows ?
gcc -I. -shared -fPIC sqlite3.c -ldl -lm -lreadline -lncurses -o sqlite3_32.dll
Help me please
you can check here https://github.com/xerial/sqlite-jdbc/blob/master/.github/workflows/ci.yml#L157-L181 how we build against an external amalgamation