यह कोई गलती नहीं है (जैसा कि मैंने स्वयं सोचा था)। यह परियोजना वास्तव में जावा 8 से कक्षाओं का उपयोग करती है। यह जावा 7 के साथ संकलित नहीं है, और इसका मेवेन बिल्ड जावा 7 के साथ नहीं चलता है।
लेकिन, जैसा कि lambdas तरह जावा 8 विशिष्ट सुविधाओं का स्रोत कोड में कहीं नहीं उपयोग किया जाता है, यह जावा के साथ चलती है 7.
एक जावा 7 परियोजना बनाते समय एक निर्भरता के रूप में HikariCP घोषित करने, और चलाने की कोशिश करें निम्नलिखित कोड:
import com.zaxxer.hikari.util.FastList;
public class Main {
public static void main(String[] args) {
FastList<String> fastList = new FastList<>(String.class);
fastList.add("Hello");
System.out.println(fastList);
}
}
यह सफलतापूर्वक चलाता है। दूसरी ओर, निम्न कोड में विफल रहता है:
fastList.removeIf(null);
इसका कारण यह है removeIf()
और कुछ अन्य तरीकों जावा 8 से कक्षाओं का उपयोग, और इसलिए जावा 7. साथ नहीं चल सकता लेकिन वे सभी UnsupportedOperationException
वैसे भी फेंक! आप देख सकते हैं कि जावा 8 कक्षाओं को आयात करने वाला एकमात्र वर्ग com.zaxxer.hikari.util.FastList
है। मुझे यकीन नहीं है कि उन्होंने ऐसा क्यों किया।
अद्यतन: बस यह स्पष्ट करना चाहता था कि परियोजना बाइटकोड का संस्करण 1.7 है, जिसे आसानी से एक डिकंपेलर या हेक्सडम्प के साथ सत्यापित किया जा सकता है। इसके स्रोत कोड जावा 7 के साथ पालन और इसलिए के रूप में @Puce द्वारा बताया
<source>1.7</source>
<target>1.7</target>
साथ निर्माण किया जा सकता है है।
दूसरी ओर, यह JDK 1.8 के साथ संकलित किया जाना चाहिए ताकि जावा 8 स्रोत कोड में संदर्भित वर्गों संकलन के दौरान उपलब्ध हैं। एक बार कोड संकलित हो जाने पर, यह जावा 7 के साथ तब तक चल सकता है जब तक लापता जावा 8 वर्ग (इस मामले में java.util.function
पैकेज से) लोड करने के लिए कोई प्रयास नहीं किया जाता है।
पुरानी टिप्पणी हो सकती है। –
कोड के दो संस्करणों को बनाए रखने के बिना http://stackoverflow.com/questions/16143684/can-java-8-code-be-compiled-to-run-on-java-7-jvm यह करने के लिए कोई तरीका नहीं है – vempo
प्रोजेक्ट से लिंक करें ताकि हम आपके प्रश्न का उत्तर दे सकें। यदि यह घोषणा करता है कि जावा 7 और जावा 8 कलाकृतियों दोनों समर्थित हैं, तो यह कहना मुश्किल है कि वास्तविक परियोजना को देखे बिना यह कैसे हासिल किया जाता है। मैं वे दो ** विभिन्न ** कलाकृतियों, जावा 7 के लिए एक और जावा 8. के लिए अन्य – vempo