Có một loạt các câu hỏi như thế này. Tôi đã đi qua hầu hết trong số họ nhưng không ai thực sự nhưng tôi không thể đưa ra bất kỳ câu trả lời:tại sao mã này biên dịch với trình biên dịch eclipse nhưng không phải với javac (maven)
Tôi có một vấn đề lạ ở một trong các lớp GWT/GWTP của tôi.
Lớp biên dịch tốt với trình biên dịch Eclipse nhưng không thành công với trình biên dịch javac (Maven).
//additional imports
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;
public class MyPresenter extends PresenterWidget<MyPresenter.MyView> {
public interface MyView extends View {
}
some code
}
Khi tôi cố gắng để biên dịch với maven tôi nhận được lỗi sau:
cannot find symbol symbol: class View
Xem đề cập đến giao diện View
trong gói com.gwtplatform.mvp.client
.
Tôi có các lớp khác trông giống nhau và hoạt động tốt.
Điều kỳ lạ là nếu tôi thay đổi thứ tự nhập khẩu hoặc tôi chỉ định gói chính xác của giao diện View
nó biên dịch mà không có bất kỳ vấn đề nào trong maven.
Để cụ thể tôi chuyển việc nhập khẩu cho com.gwtplatform.mvp.client.View
import com.gwtplatform.mvp.client.View;
//additional imports
import com.gwtplatform.mvp.client.PresenterWidget;
Tôi đã có một vấn đề tương tự một số thời gian trước đây với vấn đề thừa kế theo chu kỳ giữa các lớp mà tham khảo các lớp bên trong (làm việc tại nhật thực nhưng không trong javac). Tuy nhiên tôi không chắc chắn nếu đó là cùng một vấn đề.
Không chắc chắn về nguyên nhân gốc rễ của vấn đề của bạn, nhưng giao diện bên trong không phải là rất đẹp và có thể dẫn đến nhầm lẫn về nơi phụ thuộc của bạn đến từ đâu. – AndyT
Bạn nói đúng và tôi cho rằng việc di chuyển giao diện ra khỏi lớp sẽ khắc phục nó (khó khăn mà tôi chưa xác minh nó). Tôi đã chỉ tò mò những gì có thể là lời giải thích cho hành vi kỳ lạ này (di chuyển xung quanh nhập khẩu gây ra mã để biên dịch hay không) –