2012-02-01 51 views
6

Trong khi cố gắng để gọi một EJB đã sử dụng NetBeans (sử dụng jdk1.7) từ một khách hàng đã sử dụng Eclipse IDE (sử dụng jdk1.6), tôi nhận được sau sai sótkhông được hỗ trợ Lớp Version Lỗi

Exception in thread "main" java.lang.UnsupportedClassVersionError: stateless/TestEjbRemote : Unsupported major.minor version 51.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:688) 
    at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:463) 
    at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:414) 
    at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75) 
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) 
    at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at Main.main(Main.java:19) 

Bất kỳ giải pháp cho vấn đề này?

+1

Xem này ... http: //stackoverflow.com/questions/6066103/what-is-the-reason-for-unsupportedclassversionerror –

Trả lời

14

Cố gắng thay đổi phiên bản JRE mục tiêu thành 1.6 trong Cấu hình xây dựng.

+0

@ RaviG- làm thế nào tôi nên thay đổi "JRE Target phiên bản 1.6 trong Cấu hình Xây dựng "trong Eclipse. –

+1

Giải thích chi tiết có sẵn tại - http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm –

1

Vấn đề là tôi đã gọi EJB, được tạo bằng jdk1.7 từ ứng dụng khách, đang sử dụng jdk1.6. Chuyển jdk1.7 sang jdk 1.6, nó hoạt động. hoặc có thể chuyển jdk1.6 thành 1.7, sau đó cũng có thể hoạt động. Kết luận- u có thể gọi bất kỳ EJB nào đang sử dụng cùng một phiên bản hoặc phiên bản thấp hơn của jdk với tư cách người gọi.

1

Tôi đã gặp vấn đề tương tự nhưng tôi vẫn đang sử dụng textpad. Giải pháp khá đơn giản. Hãy thử đặt lớp xung đột vào một vị trí khác (thư mục sao lưu có thể là bất kỳ thứ gì) hoặc bạn chỉ có thể xóa nó miễn là nó không tồn tại trên cùng một thư mục. Sau đó thử biên dịch tệp java để bạn có thể có một lớp mới được xây dựng cho đặc tả máy tính của bạn. Hãy thử nếu nó hoạt động cho bạn coz nó làm việc cho tôi. :)

0

Đây là lần thứ hai tôi gặp sự cố, chỉ cần thay đổi cấu hình xây dựng của dự án này. Nhấp chuột phải vào tên dự án của bạn -> [thuộc tính] -> [trình biên dịch java] -> [Bật cài đặt cụ thể của dự án] -> đặt [mức tuân thủ trình biên dịch] thành 1.7

Eclipse có trình biên dịch riêng, không vấn đề mà phiên bản của javac (jdk) trong hệ thống của bạn, vì vậy bạn phải cấu hình phiên bản của trình biên dịch eclipse trước hết.

tham khảo: java.lang.UnsupportedClassVersionError: Bad version number in .class file?

Các vấn đề liên quan