2011-12-07 2 views
0

이전 Java 프로그램의 클래스를 기반으로하는 Android 앱을 개발 중입니다. 하지만 Java 프로젝트에서 메소드를 호출하려고 할 때마다 Android 에뮬레이터에서 오류가 발생합니다. "불행히도 MyApp는 중단되었습니다."안드로이드 - 다른 Java 프로젝트의 메소드 사용 방법

예 :

Toast.makeText(getBaseContext(), User.dummyString(), Toast.LENGTH_SHORT).show(); 

원인이 사용자 클래스는과 같이 정의 오류 : 나는 자바 프로젝트 안드로이드 프로젝트의 빌드 경로에 추가 한

public class User { 

    public static String dummyString(){ 
     return "Hello hello"; 
    } 

} 

하고, Java Project의 빌드 경로에있는 Order와 Export 탭에서 src 폴더를 체크했다. 이 문제를 어떻게 해결할 수 있습니까?

+0

Logcat을 사용하여 오류의 실제 스택 추적을 인쇄 할 수 있습니까? "불행히도 MyApp는 중단되었습니다." 최종 사용자 메시지입니다. – Andrew

+0

아아 그것을 발견! Logcat은 모든 곳에서 물건을 던지고 있었기 때문에 나는 그것을 놓쳐 버렸을 것입니다. 이것은 관련된 것 같습니다 : _java.lang.NoClassDefFoundError : com.GC01.Coursework.User_ 왜 클래스 정의를 찾을 수 없는지 아직 확실하지 않습니다 ... – user1002973

+0

나는 아래에 답변을 게시했습니다. Logcat이 당신의 친구라는 것을 기억하십시오. – Andrew

답변

0

그래서 처음에는 User 클래스를 잘못 인스턴스화하는 것처럼 보입니다.

대신에.

User.dummyString(); 

당신은 당신의 방법을 사용하여 다음 시도는 .. 같이

User user = new User(); 

를 인스턴스화해야합니다.

또한 오류가 게시되면 도움이됩니다.

+0

dummyString() 메서드가 정적이므로 그가 잘하고 있다고 생각합니다. 그래서 User.dummyString(); –

+0

dummyString()은 정적 메서드이므로 사용자 인스턴스를 생성해야합니다. – nwaltham

+0

정적 메서드이므로 인스턴스를 만들지 않고 직접 클래스 이름을 사용했습니다. 어쨌든'new User();를 인스턴스화하여 시도했지만 동일한 오류가 발생했습니다. 그것은 try-catch로 오류가 무엇인지 알려주지 않을 것이며, 단지 나 [this] (http://imgur.com/u3vvM)를 보여주고 앱을 닫는다. – user1002973

0

java.lang.NoClassDefFoundError: com.GC01.Coursework.User은 귀하의 User 클래스를 찾을 수 없음을 의미합니다. 라이브러리를 연결하고 있지만 APK가 라이브러리를 패키징하지 않습니다. 가장 쉬운 방법은 소스를 프로젝트에 직접 포함하는 것일 수도 있지만 빌드 프로세스를 다시 확인해야 할 것입니다.

+0

프로젝트에 소스를 직접 포함해야한다고 말하면 관련 코드가 들어있는 폴더를 복사 하시겠습니까? 차라리 Java 프로젝트를 병렬로 개발하고 있으므로 모든 변경 사항을 두 번 수행하지 않으려 고합니다. 빌드 과정에서 어떤 종류의 것들을 점검해야합니까? – user1002973

+0

소스 제어를 사용하여 개발중인 경우 코드를 최신 상태로 유지하는 것이 어렵지 않습니다. (자식 : http://www.eclipse.org/resources/resource.php?id=528, svn : http://subclipse.tigris.org/) 그러나 코드의 복사본 하나를 유지하려고한다면 공식 안드로이드 레퍼런스가 나를 위해 작동합니다 : http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject – Andrew

+0

내 후자의 해결책은 안드로이드 라이브러리와 다른 소스에 대해서만 작동한다는 것을 알고 있습니다. 에 연결하려고하지 않습니다.비 안드로이드 라이브러리의 경우 Dalvik은 lib 폴더에있는 파일의 컴파일 된 항아리가 필요하거나 빌드 경로에 소스의 위치를 ​​나열하더라도 프로젝트에 추가되지 않습니다. 이 이전에 받아 들여진 해결책을보십시오 : http://stackoverflow.com/a/2539055/902730 – Andrew

관련 문제