2013-04-12 2 views
0

필요한 클래스를 패키징하고 서버에서 실행되도록 클래스 구현을 만들었습니다.동일한 패키지에 클래스 종속성로드 (가져 오기 문에 표시되지 않음)

나는이 작업에 필요한 모든 클래스를로드 할 수있는 org.reflections를 사용하는 방법을 사용했습니다. 이 클래스를 사용하여 jar 파일을 생성하면 웹 서비스에 의해 서버에서 실행됩니다. 이미 완료되었습니다.

그러나 지금까지 해결할 수없는 문제가 발생했습니다.

예 : 나는이 jar 파일을 생성 할 때

package com.marciob.applications.report.generator; 

import com.marciob.applications.onleague.model.Team; 

class MyJob implements Job { 

    public void execute(Team team) { 
     ... 
    } 

} 

package com.marciob.applications.onleague.model; 

class Team { 

    private List<Player> players; 

    // getters and setters 

} 

하는 MyJob와 팀 클래스가 있지만, 수입에서 발견되지 않기 때문에 팀 클래스에서 필요한 수준의 플레이어 종속성으로 발견되지 않는 팀 단원의 진술.

누구든지이 작업을 수행 할 수 있습니다. 동일한 패키지에 있기 때문에 가져 오기 문에 표시되지 않은 항목을 포함하여 필요한 모든 클래스를 찾으십시오.

+0

리플렉션을 사용하여 클래스를로드하는 이유는 무엇입니까? jar 파일을 어떻게 생성하고 있습니까? – sdoca

+0

클라이언트 응용 프로그램에서 작업을 수신 한 메서드가 있습니다. 이 시점에서 작업 클래스와 모든 종속성을 jar 파일로 패키지하여 서버에 보내야합니다. 그래서 import 문장에서 Team.class를 찾았습니다. jar 파일에 추가되지만 Team.class의 import 문에없는 Player.class는 jar 파일에 추가되지 않습니다. 작업을 컴파일하기 위해 필요한 모든 클래스를 찾아 패키지해야하기 때문에 리플렉션을 사용합니다. 그것은 Team.class와 Player.class를 포함합니다. Team.class가 작업 가져 오기 명령문에 있고 Player.class가 없습니다. –

답변

0

마찬가지로 sdoca은 말하기를 클래스를 패키지하는 것은 수수께끼입니다. Player 클래스는 Team 클래스와 동일한 패키지에 있으므로 패키지가 함께 패키징되지 않는 유일한 방법은 ${project}/src/main/java${project}/src/test/java과 같은 다른 소스 폴더에있을 수 있습니다.

목표 클래스가 의존하는 클래스를 발견 할 수있는 유일한 방법은 Class Dependency Analyzer 도구와 마찬가지로 바이트 코드를 분석하는 것입니다.