Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Proguard中断数据库连接_Java_Sqlite_Jdbc_Proguard - Fatal编程技术网

Java Proguard中断数据库连接

Java Proguard中断数据库连接,java,sqlite,jdbc,proguard,Java,Sqlite,Jdbc,Proguard,我的应用程序使用基于的。当我生成可运行文件时,连接到我的数据库工作正常,但是如果让我处理我的应用程序,它会中断数据库连接 下面的代码建立了与数据库文件路径的连接。使用Proguard时,消息“Get connection!”从未打印,因此会被卡住 import java.sql.Connection; import java.sql.DriverManager; import javax.swing.JOptionPane; private void loadDatabase(String d

我的应用程序使用基于的。当我生成可运行文件时,连接到我的数据库工作正常,但是如果让我处理我的应用程序,它会中断数据库连接

下面的代码建立了与数据库文件路径的连接。使用Proguard时,消息“Get connection!”从未打印,因此会被卡住

import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;

private void loadDatabase(String databaseName) throws SQLException
{
    String databaseLibrary = "jdbc:sqlite:";

    JOptionPane.showMessageDialog(null, "Getting connection...");
    Connection databaseConnection = DriverManager.getConnection(databaseLibrary
            + databaseName);
    JOptionPane.showMessageDialog(null, "Got connection!");

    // ...
}
只有在Proguard中禁用了收缩和选项时,数据库连接才会在处理后中断


关于如何解决这个问题以及为什么会发生这种情况,您有什么想法吗?

不应该混淆SQLite库,最好不要使用
Class.forName
。因为编译时不需要SQLite库,所以请删除任何编译时依赖项。@JoopEggen:所以我只是通过
-keep class org.SQLite.*{*}
排除
SQLite,应该这样做吗?它至少起作用了:)是的,我想是的。最新的JDBC在Java SPI文件中指定了原始类名,所以混淆会造成严重破坏。SQLite库不应该混淆,最好省略
class.forName
。因为编译时不需要SQLite库,所以请删除任何编译时依赖项。@JoopEggen:所以我只是通过
-keep class org.SQLite.*{*}
排除
SQLite,应该这样做吗?它至少起作用了:)是的,我想是的。最新的JDBC在Java SPI文件中指定了原始类名,所以混淆会造成严重破坏。SQLite库不应该混淆,最好省略
class.forName
。因为编译时不需要SQLite库,所以请删除任何编译时依赖项。@JoopEggen:所以我只是通过
-keep class org.SQLite.*{*}
排除
SQLite,应该这样做吗?它至少起作用了:)是的,我想是的。最新的JDBC在Java SPI文件中指定了原始类名,因此(-不再需要class.forName。)因此混淆会造成严重破坏。