संक्षिप्त प्रश्न: यदि मैं अपेक्षाकृत "नाबालिग" जावा 7 भाषा सुविधाओं का उपयोग जावा 6 में पहले अनुपलब्ध करता हूं, जैसे कि कोशिश-म्यूटिकैच ब्लॉक ... क्या इसका मतलब यह है कि मेरा प्रोग्राम मशीनों में नहीं चलेगा जेआरई 6 या जेआरई 5 के साथ संकलित होने के बाद स्थापित किया गया है? यदि यह सही है, तो जावा 7 स्रोत कोड को बदलने के बिना JRE6 .jar निष्पादन योग्य बनाने का कोई त्वरित तरीका है (जिस तरह से, केवल जावा 7 फीचर जिसका उपयोग यह होगा-कोशिश करें मल्टीचैच ब्लॉक)?जावा 7 भाषा पिछड़ा संगतता
उत्तर
से सही है। आप सही हैं। मल्टी-कैच जावा 7 भाषा सुविधा है और इसे जावा 6 (या पहले) जेवीएम संगत बाइटकोड में संकलित करने का कोई तरीका नहीं है। (उदाहरण के लिए, बहु पकड़)
javac -source 1.6 -target 1.6 MyJavaFile.java
जब आप एक जावा 7 भाषा सुविधा को संकलित करने का प्रयास आप:
एक जावा 7 संकलक का उपयोग करना, निम्नलिखित आप जावा 6 संगत बाईटकोड संकलित करने के लिए अनुमति देता है मिलती है:
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
(क्या है कि warning
साधन के बारे में अधिक के लिए: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source - यह इस चर्चा से प्रासंगिक नहीं है)
आप 1.7
करने के लिए -source
ध्वज को बदलते हैं तो आपको मिलेंगे:
source release 1.7 requires target release 1.7
क्योंकि ... तुम जावा 7 स्रोत संकलन नहीं कर सकते हैं (उदाहरण के लिए स्रोत जिसमें जावा 7 विशेषताएं हैं) जावा 6 संगत बाइटकोड में।
आप जावा 7 के साथ यह संकलन (कोई -source
या -target
ध्वज के साथ) यदि आप जावा 7 बाईटकोड जो एक < जावा 7 JVM पर नहीं चलाया जा सकता मिल जाएगा। और यदि आप ऐसा करने का प्रयास करते हैं तो आपको एक त्रुटि मिल जाएगी जो आपको बताती है कि संस्करण मेल नहीं खाते:
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
आप जावा में जावा के साथ स्रोत संकलन 7 में 6 .class क्योंकि इस
javac -source 1.7 -target 1.6 Test.java
source release 1.7 requires target release 1.7
त्रुटि पैदा करता है नहीं कर सकते। ऐसा इसलिए है क्योंकि इनमें से कुछ 1.7 विशेषताएं केवल जावा 7 कक्षाओं के साथ काम कर सकती हैं। उदाहरण के लिए try-with-resources
Throwable.addSuppressed
विधि का उपयोग केवल 1.7
- 1. पिछड़ा संगतता
- 2. जावा 6 स्रोत पिछड़ा-संगतता और एसक्यूएल
- 3. एपीआई पिछड़ा संगतता
- 4. सिल्वरलाइट 5 पिछड़ा संगतता
- 5. गिट रिपोजिटरी पिछड़ा संगतता
- 6. एमएस ऑफिस पीआईए "पिछड़ा संगतता"
- 7. पिछड़ा-संगतता कितनी महत्वपूर्ण है?
- 8. डब्ल्यूसीएफ सेवा पिछड़ा संगतता जांच
- 9. उदारीकरण और .dll पिछड़ा संगतता
- 10. वेबसॉकेट संस्करण और पिछड़ा संगतता
- 11. डब्ल्यूसीएफ सेवा - पिछड़ा संगतता मुद्दा
- 12. प्रोटोबफ-नेट एनम पिछड़ा संगतता
- 13. पिछड़ा संगतता और वेब सेवाएं
- 14. Grails 1.3.7/जावा 7 संगतता
- 15. विंडोज 10 यूनिवर्सल एप्स पिछड़ा संगतता
- 16. पिछड़ा संगतता क्या असंभव बना देगा?
- 17. इकाई फ्रेमवर्क में एसक्यूएल सर्वर पिछड़ा संगतता?
- 18. आईओएस 6 एपीआई और पिछड़ा संगतता
- 19. एंड्रॉइड स्टूडियो में पिछड़ा संगतता क्या है?
- 20. जेडीके 1.7 पिछड़ा संगतता तोड़ता है? (जेनेरिक)
- 21. विंडोज 7 संगतता
- 22. एक्सकोड 5: लगभग 64-बिट्स आर्किटेक्चर और पिछड़ा संगतता
- 23. जावा 8 वसंत संगतता
- 24. मैक ओएस एक्स ऐप पिछड़ा संगतता 10.6 और 10.7 एनएसपीओपीओवर
- 25. .NET कॉम्पैक्ट फ्रेमवर्क पिछड़ा संगतता 3.5 और 2.0
- 26. विभिन्न जावा स्रोत संगतता
- 27. विरासत संगतता
- 28. जेडके 7 के साथ जीडब्ल्यूटी संगतता 7 नई विशेषताएं
- 29. जावा संस्करण संगतता सत्यापित करें
- 30. जावा 7 शैली स्काला