काम नहीं करता है मैंने अपने स्रोत कोड को source
और target
कॉन्फ़िगर पैराम का उपयोग करके संस्करण 1.5 संगत होने के लिए मेरे स्रोत कोड को संकलित करने के लिए कहा है। यहाँ मेरी पोम है:मैवेन के साथ जावा कंपाइलर के संसाधन और लक्ष्य को सेट करना -
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>user</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
और मैं इस तरह एक साधारण मुख्य वर्ग है:
package com.user;
public class Test
{
public static void main(String[] argv)
{
System.out.println("".isEmpty());
}
}
String#isEmpty()
जावा 1.6 के बाद से शुरू की गई थी। हालांकि, mvn compile
के साथ मेरे कोड को संकलित करना, जबकि मैं असफल होने की उम्मीद करता क्योंकि मैंने जावा 1.5 में अपने कोड को संकलित करने के लिए मेवेन सेट किया है और String#isEmpty
जावा 1.6 में पेश किया गया था। क्या कोई सुझाव दे सकता है कि मैंने गलत क्या किया हो? संकलन करते समय किसी विशेष जावा संस्करण का उपयोग करने के लिए मेवेन को मजबूर करने का सही तरीका क्या है?
जानकारी के लिए, मैं अपाचे मेवेन 2.2.1 और जावैक 1.6.0_19 का उपयोग कर रहा हूं।
धन्यवाद।
यह एक अच्छा समाधान है लेकिन दुर्भाग्य से यह आंशिक इंटरफ़ेस कार्यान्वयन जैसे कुछ अन्य एपीआई असंगतताओं को संभाल नहीं करता है। यदि आप इटरेटर की निकासी() विधि को कार्यान्वित नहीं करते हैं तो यह इंटरफ़ेस में 'डिफ़ॉल्ट' कीवर्ड के कारण जावा 8 के तहत संकलित होगा, लेकिन जावा 7 के तहत संकलित नहीं होगा। और यह स्नफ़फर प्लगइन उसको नहीं पकड़ेगा क्योंकि यह केवल एक विधि नहीं है कहते हैं। – Innokenty
यहां पशु स्निफर का उपयोग करने के तरीके पर एक आधिकारिक मार्गदर्शिका है और क्यों: https://maven.apache.org/guides/mini/guide-building-jdk14-on-jdk15.html – Innokenty