2017-02-13 8 views
1

나는 GWT 컴파일이 어떻게 작동하는지에 대해 더 많이 이해하려고 노력하고있다.GWT 컴파일러 : 컴파일 오류가 치명적인 경우가 있습니까?

좀 더 구체적으로 말하자면 GWT가 특정 오류가 치명적이라고 판단하는 방법과 앱 컴파일이 실패했는지, 그리고 컴파일 오류가 발생하더라도 컴파일이 성공했다고 판단하는 방법을 알고 싶습니다.

내가 묻는 이유는 검색을 할 때 내 로그에서 합법적 인 오류를 구분하는 것이 어렵고 어떤 문제도 발생하지 않는 것으로부터 판단하기 어렵 기 때문입니다.

나는 GWT 2.7과 GWT 2.8에 대해 이야기하고있다. 또한 관련이있는 경우 GWTP 1.5.3을 사용하고 있습니다.

구체적인 예 : 내 로그에이 오류가 : 오류가 위의 내 응용 프로그램 컴파일을 실패하지 않습니다

Tracing compile failure path for type 'myApp.ClientModule' 
Errors in 'file:/E:/data/.../myApp/ClientModule.java' 
    Line 24: No source code is available for type myApp.client.ServicesProvidersModuleGen; did you forget to inherit a required module? 
Checked 1 dependencies for errors. 

을하고,을 myApp가 잘 작동 (클래스는 일부 GIN 바인딩을 등록 뭔가 , 또한 작동).

오류가 발생했을 때 GWT가 컴파일에 실패하지 않은 이유는 무엇입니까?

Errors in 'com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java' 
Line 102: No source code is available for type javax.validation.ValidationException; did you forget to inherit a required module? 
Line 177: No source code is available for type javax.validation.ConstraintValidator<A,T>; did you forget to inherit a required module? 
Line 153: No source code is available for type javax.validation.groups.Default; did you forget to inherit a required module? 
Line 302: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module? 

이러한 오류는 내 컴파일 실패하지 않습니다

또한, 나 또한 같은 다른 오류가 있습니다. 왜?

편집 1 : 추가하는 것을 잊었습니다.

오류가 엔트리 포인트에서 직접 도달 할 수있는 경우 컴파일이 실패하고 해당 코드에 도달 할 수 없을 때 컴파일이 정상적으로 수행되었다고 추측하고 싶습니다. 그러나 주석이있는 코드의 반대 예제가 있습니다. 진입 점에서 도달 할 수있는 코드가 있으며 소스 코드를 사용할 수없는 주석이 있지만 컴파일이 성공합니다 (단, 지금까지 찾을 수있는 유일한 예외 임).

답변

3

귀하의 분석이 좋습니다.

GWT는 원본 경로에없는 모든 것을 무시하고 수퍼 소스를 "리베이스"합니다. 이 검사 중에는 본 오류와 같은 오류가 발생하지만 코드가 누락 된 원본 (진입 점에서)에 도달 할 때만 오류가 치명적입니다. 어노테이션도 예외는 아니지만, 자바가 허용하는 @interface을 구현하지 않는 한 코드는 실제 메타 데이터로 절대 도달하지 않습니다. 어노테이션은 생성자가 사용할 수 있습니다.이 경우에는 수 있습니다. 빌드가 실패합니다.

-failOnError (또는 별칭 인 -strict)을 사용하면 모든 오류가 치명적입니다. 당신은 IMO에서 이것을 돌리는 것을 목표로해야합니다.