2017-12-10 7 views
0

Androidスタジオ2.2.3から3.0.1にアップデートしました。今、私の.jarの依存関係は何とか壊れています。ここでアンドロイドスタジオ3.0.1にアップデートされました。JDBC .jar依存関係が動作しません。

java.lang.ClassNotFoundException: org.sqlite.JDBC 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at com.DataAccessObjects.DataAccessObject.openConnection(DataAccessObject.java:56) 
    at com.DataAccessObjects.DataAccessObject.updateDb(DataAccessObject.java:35) 
    at com.DataAccessObjects.AuthTokenDao.createTable(AuthTokenDao.java:45) 
    at com.Services.Service.newDaosAtDb(Service.java:45) 
    at com.Services.ClearService.<init>(ClearService.java:19) 
    at com.Handlers.ClearHandler.<init>(ClearHandler.java:28) 
    at com.Server.run(Server.java:37) 
    at com.Server.main(Server.java:26) 
Exception in thread "main" java.lang.NullPointerException 
    at com.DataAccessObjects.DataAccessObject.updateDb(DataAccessObject.java:37) 
    at com.DataAccessObjects.AuthTokenDao.createTable(AuthTokenDao.java:45) 
    at com.Services.Service.newDaosAtDb(Service.java:45) 
    at com.Services.ClearService.<init>(ClearService.java:19) 
    at com.Handlers.ClearHandler.<init>(ClearHandler.java:28) 
    at com.Server.run(Server.java:37) 
    at com.Server.main(Server.java:26) 

はそれらなしで、それは文句を言うので、それは、JUnitのとgsonで適切に扱う

dependencies { 
    implementation files('libs/junit-4.12.jar') 
    implementation 'com.google.code.gson:gson:2.2.4' 
    implementation files('libs/sqlite-jdbc-3.7.2.jar') 
} 

build.gradleモジュールの私の依存関係です。しかし、jdbc .jarをインクルードするかどうかに関わらず、同じエラーメッセージが返されます。

EDIT1:どういうわけか、これを破ったのは更新版だとわかっています。私は、2.2.3がインストールされたコンピュータを持っています。私が知っている限り、まったく同じ.jarファイルであり、問​​題はありません。興味深いのは、3.0.1では「実装ファイル(...)」と書かれていますが、2.2.3では「コンパイルファイル(...)」と書かれています。

EDIT2:私はorg.sqlite.JDBCオブジェクトをインスタンス化することができ、Android Studioはそれが有効なクラスであることを認識しますが、Class.forName( "org.sqlite.JDBC")を呼び出すと、突然有効なクラスではなくなります...

public void openConnection()throws SQLException{ 
    try { 
     assert connection == null; 
     assert dbName.length()>0; 
     org.sqlite.JDBC hi = null; //valid code 
     Class.forName("org.sqlite.JDBC"); //ClassNotFoundException: org.sqlite.JDBC 

     connection = DriverManager.getConnection("jdbc:sqlite:" + dbName); 

答えて

0

私は新しいプロジェクトを作成し、すべてのコードをその中に移動しました。現在は機能しています。

私のアドバイスが必要な場合は、厳しい時間の制約の下で作業しているときは、Androidスタジオを更新しないでください。これは一日中私を連れて行きました。

関連する問題