2010-10-14 28 views
7

Đầu tiên Eclipse:Eclipse Google -App -Engine "sẽ không tăng cường"

Không thể thoát khỏi lỗi này ... đã thử tất cả các sửa chữa đề nghị trên google ..

lớp dai dẳng "Class com Bạn có thể muốn chạy lại trình tăng cường và kiểm tra lỗi trong đầu ra không có bảng trong cơ sở dữ liệu, nhưng hoạt động yêu cầu nó. Vui lòng kiểm tra đặc điểm kỹ thuật của MetaData cho lớp này.

List of 500 lines of exceptions... 
*Caused by: 
javax.jdo.JDOUserException: Persistent class "Class com.blahb.blahblah.master.UserToken does not seem to have been enhanced. You may want to rerun the enhancer and check for errors in the output." has no table in the database, but the operation requires it. Please check the specification of the MetaData for this class. 
    at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375) 
    at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:230) 
    at com.gulfnet.gulfstar.master.Master.getUserToken(Master.java:645) 
    at org.apache.jsp.top_jsp._jspService(top_jsp.java:68) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet* 

My đồng nghiệp có dự án này cùng trên cửa sổ máy tính của mình và nó chạy tốt ...

Tôi đã thử ba linux, mac, cửa sổ, 3 phiên bản khác nhau của máy tính khác nhau nhật thực, 20 các cách nhập khác nhau, tạo dự án mới, ect ....

Có, đường dẫn .classpath được sửa để phản ánh đúng vị trí của tất cả các tệp jar. Tôi đã thử thêm mọi lớp đơn, java, jar như được đề xuất trên một trong các blog của google vào lớp/đường dẫn (cửa sổ -> pref -> google -> orm) không có gì ...

Và ở đâu "Bảng điều khiển Enhancer" chết tiệt này được cho là nằm trong Eclipse ...? Tôi đang chạy Eclipse mới nhất, với TẤT CẢ các plugin của Google-app-engine ..

Bất kỳ ý tưởng nào ...? Bất kỳ ai..?

Cảm ơn bạn!

Trả lời

1

Chúng tôi chỉnh sửa [Project> properties> Google> App Engine> ORM] Trang để loại bỏ các src/ và chỉ tăng cường một tập hợp con của các lớp học của chúng tôi (src/com/vo/ java *, src ?/com/lại/res/) như đã giải thích ở: datanucleus enhancer & javaw: "the parameter is incorrect"

Chúng tôi cũng sao chép Google | App Engine để một con đường ngắn hơn như được giải thích dưới đây làm việc cho chúng tôi: http://code.google.com/p/google-web-toolkit/issues/detail?id=4395#c15

0

tôi đã t ông cùng một lỗi và trong dung dịch trường hợp của tôi chỉ làm cho lớp không dai dẳng bằng cách bình luận dòng này:

@PersistenceCapable(identityType = IdentityType.APPLICATION) 

Sau đó chạy ứng dụng của tôi và nhận được một lỗi về sự kiên trì, ngăn chặn nó, dòng trước chú và chạy ứng dụng đó nữa.

0

Vấn đề này đã được giải quyết cho tôi bằng cách thêm một khóa chính, như vậy:

@PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id;

1

Nhấp chuột phải vào dự án, sau đó Properties> Builders. Có điểm nào giống như "Thiếu Trình xây dựng (org.datanucleus.ide.eclipse.enhancerbuilder)" không?

Nếu bạn tạo một dự án ứng dụng web mới, hãy đảm bảo rằng "Sử dụng Google Web Toolkit" và "Sử dụng Google App Engine" được chọn và sau đó xem lại trong Thuộc tính> Nhà xây dựng, sau đó nói "Enhancer" thay vì "Thiếu người xây dựng"?

Nếu có, thì giải pháp chắc chắn là tạo dự án mới từ đầu và sau đó chuyển nội dung từ dự án cũ sang dự án mới theo cách thủ công. Chỉ cần nhập dự án cũ vào một Eclipse khác không hoạt động, trình tăng cường sẽ vẫn không có ở đó.

3

Vấn đề là Enhancer cho DataNucleus bị xóa khỏi danh sách Nhà xây dựng cho dự án. Đối với tôi tất cả các dự án sạch, xây dựng lại, vv đã không giúp đỡ. Những gì bạn cần làm là (1) Tạo dự án GAE mẫu mới, mở ".project" tập tin của dự án mà trong trình soạn thảo văn bản đơn giản, sao chép văn bản này từ đó:

<buildCommand> 
    <name>com.google.appengine.eclipse.core.enhancerbuilder</name> 
    <arguments></arguments> 
</buildCommand> 

Bây giờ sao chép này để phía dưới trong danh sách các nhà xây dựng trong tệp .project của riêng bạn. Bây giờ DataNucleus sẽ hoạt động tốt. Tôi không biết tại sao đôi khi nó lại xuất hiện.

1

Cập nhật lên phiên bản mới nhất của appengine java sdk đã giải quyết nó cho tôi.

1

Thay đổi phiên bản SDK hoạt động cho tôi.

Điều thú vị là tôi đã sử dụng phiên bản mới nhất. Hoàn nguyên về phiên bản trước đó là cách duy nhất tôi có thể kích hoạt bước 'nâng cao'. Điều này là với một kịch bản xây dựng gradle.