2012-10-02 38 views
5

Tôi có ENUM được sử dụng ở phía máy chủ. Tôi muốn sử dụng enum này ở phía khách hàng (GWT).Thừa kế nguồn java bên ngoài trong dự án GWT

Đây là cấu trúc:

se.mycompany.core 
se.mycompany.core.TheEnum <-- this Enum. 

se.mycomapny.web.gwtproject <-- The GWT project. 
se.mycomapny.web.gwtproject.client 

Tôi đã cố gắng thêm

<inherits name="se.mycompany.core.TheEnum"/> 

đến file gwtproject.gwt.xml tôi. Nhưng tôi nhận được thông báo lỗi sau:

[LRI] Không thể tìm thấy 'se/mycompany/core/TheEnum.gwt.xml' trên đường dẫn lớp của bạn; có thể là một lỗi đánh máy, hoặc có thể bạn quên bao gồm một mục nhập classpath cho nguồn?

Tôi đã cố thêm tệp TheEnum.gwt.xml vào 'se/mycompany/core /' với ngữ cảnh sau.

<module> 
    <inherits name='com.google.gwt.user.User'/> 
    <source path="TheEnum"></source> 
</module> 

Nhưng nó vẫn than phiền về điều tương tự.

Tôi đoán tôi cần phải thêm các se.mycompany.core.TheEnum vào classpath trong build.xml bằng cách nào đó, nhưng tôi không biết làm thế nào hoặc ở đâu.

Trả lời

6

Thẻ "kế thừa" được sử dụng để nhập các mô-đun khác, không phải các lớp riêng lẻ. Bạn có thể đạt được những gì bạn muốn bằng cách tạo ra một mô-đun GWT đơn giản dưới gói core, và sau đó kế thừa rằng mô-đun trong một hiện:

Tạo một tập tin gọi Core.gwt.xml dưới gói se.mycompany.core với nội dung sau:

<?xml version="1.0" encoding="UTF-8"?> 
<module> 
    <source path="" includes="TheEnum.java"/>  
</module> 

Sau đó, trong mô-đun hiện tại của bạn thêm:

<inherits name='se.mycompany.core.Core'/> 
+0

Vẫn nhận được "Không thể tìm thấy 'se/mycompany/core/Core.gwt.xml' trên đường dẫn lớp học của bạn; có thể là lỗi đánh máy hoặc có thể bạn đã quên để bao gồm mục nhập classpath cho nguồn? " – brange

+0

Kiểm tra lại đường dẫn tệp và tên gói của bạn. Tôi đã sử dụng một thiết lập tương tự nhiều lần và nó hoạt động cho tôi. –

+0

Nếu bạn đang biên dịch tệp * .gwt.xml của mình thành một cái lọ bằng cách sử dụng maven, bạn có thể thấy jar của bạn thiếu tệp xml. Xem chủ đề sau để khắc phục: https://stackoverflow.com/questions/9798955/with-maven-clean-package-xml-source-files-are-not-included-in-classpath – Jake88

0

tốt hơn để thêm enum trong gói khách hàng, tức là, "se.mycomapny.web.gwtproject.client". Và từ phía máy chủ, bạn có thể sử dụng enum này từ gói ứng dụng khách.

Tuy nhiên, bạn chỉ muốn nó ở phía máy chủ, tạo gói "se.mycompany.core.shared", tạo tệp Core.gwt.xml trong gói "se.mycompany.core".

Core.gwt.xml:

<module> 
<source path="shared"/> 
</module> 

Bây giờ tạo TheEnum.java trong gói "se.mycompany.core.shared". Và trong tệp gwt.xml chính của bạn viết dòng dưới đây,

<inherits name='se.mycompany.core.Core'/> 
Các vấn đề liên quan