2012-03-19 39 views
6

tôi gần đây đã cắn bởi một số mã làm cho nó thông qua chu trình triển khai của chúng tôi mà không ném bất kỳ lỗi biên dịch khi cần có (chúng tôi nghĩ) ...biên dịch xuống một phiên bản - nhật thực, maven

Mã này trong câu hỏi là sử dụng phương pháp tĩnh mới Integer.compare là từ Java 1.7.

Môi trường máy chủ được chạy trên Java 1.6. Trong khi môi trường phát triển của chúng tôi đã cài đặt Java 1.7.

Giả định của chúng tôi là việc đặt các tùy chọn dự án thành tuân thủ JavaSE-1.6 ít nhất sẽ cho chúng tôi cảnh báo biên dịch trên mã được đề cập, tuy nhiên không có cảnh báo hoặc lỗi nào hiển thị trong nhật thực.

Project> properties> biên dịch java> Tuân JDK> Sử dụng phù hợp từ môi trường thực thi 'JavaSE-1.6' trên java xây dựng con đường

secondarily vào đó, chúng tôi sử dụng maven để biên dịch việc triển khai chính thức. POM được hướng dẫn rõ ràng tuân thủ trình biên dịch 1.6:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <optimize>true</optimize> 
    </configuration> 
</plugin> 

Tuy nhiên, việc xây dựng maven chạy thành công với mã sự cố.

Làm thế nào tôi có thể yêu cầu cả maven và nhật thực thất bại khi mã sẽ không hoạt động trong Jvm trước đây hơn là nó đang được biên dịch bởi?

Cảm ơn Paul.

+0

Tôi nhớ rằng tôi đã phải đối mặt với tình huống tương tự trước đây (nhưng nó là 1,5 so với 1,6) nhưng tại thời điểm đó nó hoạt động như những gì bạn mong đợi. Tôi nghi ngờ nếu có bất kỳ lỗi trong JDK gây ra điều đó? –

Trả lời

2

Sử dụng plugin trình ẩn động vật maven để cho bạn biết khi nào bạn sử dụng các API không tương thích ngược. Tôi cũng nói rằng Java 1.7 có một tính năng cho điều này, nhưng tôi không có kinh nghiệm cá nhân với nó.

+0

công việc này tuyệt vời, ít nhất tôi có thể đảm bảo rằng mã không chính xác không làm cho nó triển khai. cảm ơn. – pstanton

2

Cài đặt java 1.6 trong môi trường phát triển, sau đó nhấp chuột phải vào dự án trong nhật thực đi đến Properties-> Java Build Path. Chuyển đến tab Libraries và loại bỏ java 1.7 JRE, sau đó thêm java 1.6 JRE.

Tôi không đủ quen với maven để trả lời một nửa.

+0

không có cách nào mà không cài đặt phiên bản cũ của java? – pstanton

+0

Theo như tôi có thể nói, có. Dù cách tôi mô tả hoặc hộp tiếp theo trong menu tuân thủ có một trình đơn thả xuống cho mức tuân thủ trình biên dịch. Nếu bạn chọn một java cũ hơn để tuân thủ trình biên dịch, một thông báo sẽ xuất hiện ở phía dưới để chắc chắn rằng bạn đã cài đặt jre level đó. – Thomas

+0

vâng tôi nhận thấy điều đó nhưng hy vọng tránh điều này vì chúng tôi có một vài dự án khác nhau với các yêu cầu khác nhau ... – pstanton

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