2012-05-31 17 views
5

ठीक नहीं है, यह एक अजीब समस्या है: मेरे पास जावा परीक्षण फ़ाइल है जो कुछ यूटीएफ -8 अक्षरों का उपयोग करती है। जब मैंने इसे Maven के साथ संकलन, का उपयोग करएमवीएन संकलन यूटीएफ -8 एन्कोडिंग

mvn -Dfile.encoding=UTF-8 -Dproject.build.sourceEncoding=UTF-8 test 

(इस प्रकार दोनों कथित मंच एन्कोडिंग और स्रोत फ़ाइल एन्कोडिंग की स्थापना, maven platform encoding देखें) जब मैं

साथ फ़ाइल संकलन मैं की तरह

[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building project 
[INFO] task-segment: [test] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory path/src/main/resources 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [resources:testResources {execution: default-testResources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory path/src/test/resources 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] Compiling 7 source files to path/target/test-classes 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Compilation failure 
path/to/file.java:[42,23] unclosed character literal 
path/to/file.java:[42,25] ';' expected 
path/to/file.java:[42,26] unclosed character literal 
path/to/file.java:[47,23] unclosed character literal 
path/to/file.java:[47,25] illegal character: \182 
path/to/file.java:[47,26] unclosed character literal 

कुछ पाने

path/to/file.java:42: unclosed character literal 
    illegalCharEnc('ä'); 
       ^
path/to/file.java:42: ';' expected 
    illegalCharEnc('ä'); 
        ^
path/to/file.java:42: unclosed character literal 
    illegalCharEnc('ä'); 
        ^
path/to/file.java:47: unclosed character literal 
    illegalCharDec('ö'); 
       ^
path/to/file.java:47: illegal character: \182 
    illegalCharDec('ö'); 
        ^
path/to/file.java:47: unclosed character literal 
    illegalCharDec('ö'); 
        ^
6 errors 
:
javac path/to/file.java 

मैं मिलती-जुलती त्रुटियां मिल

अब जब मैं बजाय

javac -encoding UTF-8 path/to/file.java 

उपयोग करते हैं, मैं क्योंकि लापता निर्भरता cannot find symbol त्रुटियों मिलता है। तो मुझे लगता है कि समस्या यह है कि परीक्षणों को संकलित करते समय javac मेवेन में यूटीएफ -8 विकल्प के साथ नहीं कहा जाता है (ध्यान दें कि Using 'UTF-8' encoding to copy filtered resources.compiler:testCompile -section में अनुपलब्ध है)। क्या यह निष्कर्ष सही है? क्या मैं कुछ भूल रहा हूँ? क्या यह एक ज्ञात समस्या है? मैं इसके बारे में कुछ भी कर सकता हूँ? जाहिर है, मेरे सिस्टम पर प्लेटफॉर्म एन्कोडिंग यूटीएफ -8 नहीं है, लेकिन मैं वर्तमान में इसे बदल नहीं सकता हूं।

+0

प्लेटफ़ॉर्म के डिफ़ॉल्ट एन्कोडिंग को यूटीएफ -8 में सेट करने से समस्या हल हो गई। मुझे लगता है कि यह मेवेन में एक बग है। – roesslerj

+0

आप किस संकलक-प्लगइन का उपयोग करते हैं? क्या आपने प्रोजेक्ट को परिभाषित किया है। बिल्डिंग। अपने पोम में सोर्सिंग करना (ऐसा लगता है कि आपने नहीं किया) – khmarbaise

+0

कंपाइलर-प्लगइन का संस्करण पोम में निर्दिष्ट नहीं है, मेवेन संस्करण "2.2.1 (रेडियन -4)" है। मैंने पोम में 'project.build.SourceEnconding' प्रॉपर्टी निर्दिष्ट करने का प्रयास किया, कुछ भी नहीं बदला। और यह वैसे भी कमांड लाइन में '-Dproject.build.sourceEncoding =' देने जैसा ही होना चाहिए। – roesslerj

उत्तर

6

एक ही समस्या होने के बाद मैं पहले इस प्रश्न में आया था।

https://stackoverflow.com/a/10375505/332248 (क्रेडिट इस जवाब देने के लिए @chrisapotek करने और @Jopp Eggen)

5

Maven संकलक प्लगइन, एन्कोडिंग लेता है: लेकिन वहाँ के रूप में कोई जवाब नहीं मैं आगे देखा था और एक और सवाल है कि उत्तर दिया गया मिल गया और मुझे इस सुलझाने में मदद की एक विन्यास पैरामीटर के रूप में। न केवल यूटीएफ -8 बल्कि एन्कोडिंग मानकों की एक विस्तृत विविधता समर्थित है।

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
संबंधित मुद्दे