Kısa soru: Eğer nispeten "önemsiz" bir Java kullanırsam, Java 6'da daha önce kullanamıyorum, örneğin try-muticatch bloğu gibi ... Bu benim programımın makinelerde çalışmadığı anlamına gelir JRE 6 veya JRE 5 ile olduğu gibi derlendikten sonra yüklü? Bu doğruysa, bir Java 7 kaynak kodunu değiştirmeden bir JRE6 .jar çalıştırılabilirliği üretmenin hızlı bir yolu var mı (bu arada, kullanacağı tek Java 7 özelliği, try-çok nokta blokudur)?java 7 dil geriye dönük uyumluluk
cevap
Siz doğru. Çoklu yakalama, bir Java 7 dil özelliğidir ve onu Java 6 (veya daha eski) JVM uyumlu bayt koduna derlemenin bir yolu yoktur. olacak (örneğin, çoklu catch) Eğer bir Java 7 dil özelliğini derlemeye çalıştığınızda
javac -source 1.6 -target 1.6 MyJavaFile.java
: Java 7 derleyicisi kullanarak
, şu Java 6 uyumlu bayt kodu derlemek için izin verir olsun:
roach$ javac -source 1.6 -target 1.6 test.java
warning: [options] bootstrap class path not set in conjunction with -source 1.6
test.java:9: error: multi-catch statement is not supported in -source 1.6
} catch (NullPointerException | BufferOverflowException ex) {}
^
(use -source 7 or higher to enable multi-catch statement)
1 error
1 warning
(yani warning
araçlar, gördükleri hakkında daha fazla bilgi için: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source - bu bu tartışmaya relavent değil)
1.7
için
-source
bayrağını değiştirirseniz
Alacağınız:
source release 1.7 requires target release 1.7
... Eğer Java 7 kaynağını derlemek değil olabileceğinden (ör Java 7 özellikleri olan Java 6 ile uyumlu). Eğer (hayır -source
veya -target
bayrağıyla) Java 7 ile derlemek Eğer
Bir < Java 7 JVM üzerinde çalıştırılamaz Java 7 bytecode alacak. Ve bunu yapmaya çalışırsanız, sürümlerin uyuşmadığını belirten bir hata alırsınız:
roach$ /Library/Java/Home/bin/java net.mostlyharmless.multicatch.App
Exception in thread "main" java.lang.UnsupportedClassVersionError: net/mostlyharmless/multicatch/App : Unsupported major.minor version 51.0
Bu
javac -source 1.7 -target 1.6 Test.java
source release 1.7 requires target release 1.7
hata üretir çünkü Java içine Java ile 6 SINIFI 7 özellikleri kaynağını derlemek cant. Bunun nedeni, 1.7 özelliklerinden bazılarının yalnızca Java 7 sınıflarıyla çalışabilmesidir. Örneğin, try-with-resources
, Throwable.addSuppressed
yöntemini kullanmaktadır, yalnızca 1,12
- 1. OpenGL Gölgelendirme Dil geriye dönük uyumluluk
- 2. ıserializable ve geriye dönük uyumluluk
- 3. Log4j2 geriye dönük uyumluluk sorunları
- 4. Windows 10 Evrensel Uygulamalar geriye dönük uyumluluk
- 5. WCF Servisi - Geriye dönük uyumluluk sorunu
- 6. iOS 6 API'ler ve geriye dönük uyumluluk
- 7. Gazetelik ile geriye dönük uyumluluk olmadan entegrasyon
- 8. WebSocket sürümleri ve geriye dönük uyumluluk
- 9. Java Servlet API'ları geriye dönük uyumlu mu?
- 10. Java ve örnek olarak geriye dönük regex
- 11. Geriye dönük görünümler lookbehind
- 12. Kümülatif geriye dönük yuvarlanma birleştirmesi
- 13. Geriye dönük uyumluluğun korunmasıyla işlevlerin yeniden adlandırılması
- 14. Amazon S3 yaşam döngüsü geriye dönük uygulama
- 15. HTML5 yer tutucu özniteliği geriye dönük uyumluluk göz önünde bulundurularak nasıl kullanılır?
- 16. match_parent uyumluluk
- 17. Geriye Uyumluluk Açısal UI Bootstrap 0.14.0
- 18. Statik olarak bağlanmış Qt uygulamasının geriye dönük uyumluluğunun dağıtımı
- 19. __İnit__.py dosyasındaki kodun taşınması ancak geriye dönük uyumluluğun korunması
- 20. Boost.serialization ile vektör (de) serileştirmenin geriye dönük uyumluluğu
- 21. Delphi 5 gereklidir - daha yeni Delphi sürümleri geriye dönük uyumludur?
- 22. PHP 5.3 PHP 5.2 ile geriye dönük uyumlu mu?
- 23. Scala/Kıvılcım sürümü uyumluluk
- 24. Java derleyicisi uyumluluk düzeyini ayarlama
- 25. Mac OS X Uygulama geriye doğru uyumluluk 10.6 ve 10.7 NSPopovers kullanırken
- 26. 'Bu' bir işaretçi yerine referans yapmak geriye dönük olarak daha iyi olur mu?
- 27. Yeni bir API mevcut olduğunda, geriye dönük uyumlu bir OS X uygulaması oluşturma?
- 28. Delphi dil özelliklerine Java eşdeğerleri
- 29. Android için Java ME uyumluluk katmanı
- 30. Linq: ileriye dönük koşulu