2017-12-10 19 views
0

Android Studio 2.2.3에서 3.0.1로 업데이트되었습니다. 이제 내 .jar 종속성이 어떻게 든 부러졌습니다. 그들없이 불평 때문에 여기 android studio 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) 

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') 
} 

제대로 JUnit을하고 GSON 다루는 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 Studio를 업데이트하지 마십시오. 이것은 하루 종일 나를 데려 갔다.