을 존재하지 않았던 클래스에 대한 ClassNotFoundException가 점점 ADT) 앱이 처리되지 않은 ClassNotFoundException
과 충돌합니다. 로그 캣은 나에게 말한다 누락 된 클래스는 존재하지 않는 클래스입니다 - 어떤추가 된 새로운 (부분적으로 리팩토링) 코드는, 지금은 내 응용 프로그램의 주요 활동에 다음 코드 한
com.myself.foo.myapp.OtherClass
입니다. 간단한 클래스 이름은 다른 패키지의 클래스 이름이지만, 접두어는 내 패키지 이름입니다. 분명히 그 수업은 결코 발견되지 않을 것입니다.
내 코드에서 OtherClass
에 대한 생성자 호출을 가리키면 올바른 패키지 접두어로 올바른 클래스 이름이 표시됩니다. 소스 파일 - 각각의 경로가 그대로
두 패키지 모두 동일한 소스 트리에 존재 :
~/src/myapp/src/com/myself/foo/myapp/MainActivity.java
~/src/myapp/src/com/someotherfellow/hisapp/OtherClass.java
무엇이 문제의 원인, 나는이 문제를 어떻게 해결할 수 있습니까?
편집 : 그냥 호기심에서, 나는 안드로이드를 찾으려고 패키지에 OtherClass
이동 코드를 리팩토링했습니다. 지금은 얻을 :
: java.lang.Class의 <com.myself.foo.myapp.OtherClass>은 참으로-생성자 어느에는 제로 인수 생성자
이 없습니다 OtherClass
의 3 개 인수는 호출시 제공된 3 개의 인수를 취합니다.
JVM이 어떤 알려진 생성자와도 일치하지 않는 new OtherClass()
(인수가 없음)을 호출하는 것처럼 보입니다. OtherClass
이 다른 패키지에 있으면 JVM은 현재 패키지에 일치하는 생성자 서명이있는 OtherClass
클래스를 찾으려고 시도합니다. 그러나 OtherClass
이 같은 패키지에 있으면 JVM은 적어도 올바른 클래스를 선택하지만 일치하는 생성자를 찾지 못합니다.
JVM이 인수없는 생성자를 찾는 원인은 무엇입니까?
OtherClass
은 Android 구성 요소가 아닙니다. Android 프레임 워크의 일부 클래스이며 Manifest의 아무 곳에서나 참조되지는 않습니다. OtherClass
은 Object
의 직계 종속이며 사용자 정의 Interface를 구현합니다.
컴파일 오류가 발생하지 않아 컴파일 타임에 런타임에 사용할 수 없으므로 런타임에 클래스 경로를 확인할 수 있습니까 –
@ gatisahu 구체적으로 어떤 설정을해야합니까? 두 패키지 모두 동일한 루트 경로 (~/src/maypp/src)를 공유한다는 점에 유의하십시오. 문제는 정규화 된 클래스 이름을 내가 가져온 패키지와 다른 패키지로 변경하고있는 것 같습니다. – user149408