2008-10-07 21 views
10

द्वारा समर्थित नहीं है जब भी मैं सूर्य जावा के तहत अपना अपाचे फ़ेलिक्स (ओएसजीआई) आधारित एप्लिकेशन शुरू करता हूं (1.6.0_10-आरसी 2-बी 32 और अन्य 1.6.एक्स बिल्ड बनाता है) मैं देखता हूं कंसोल पर आमतौर पर संदेश आउटपुट (आमतौर पर उबंटू 8.4 के तहत):एन्कोडिंग 'यूटीएफ -8' जावा रनटाइम

चेतावनी: एन्कोडिंग 'यूटीएफ -8' जावा रनटाइम द्वारा समर्थित नहीं है।

मैंने कभी-कभी टॉमकैट और रालिन दोनों को चलाने पर यह संदेश प्रदर्शित किया है। यदि जावा यूनिकोड और यूटीएफ -8 का समर्थन करता है, तो यह संदेश क्या कारण बनता है? मुझे अभी तक कोई संदर्भ नहीं मिला है, या कहीं और इसका जवाब है।

+0

अजीब। यूटीएफ -8 एक आवश्यक एन्कोडिंग है। किसी को भी जावा रनटाइम जारी नहीं करना चाहिए जिसमें यूटीएफ -8 और यूएस-एएससीआईआई शामिल नहीं है। – erickson

+0

क्या अंतर्निहित ओएस में कुछ कमी हो सकती है? – skaffman

+0

कोई भी उत्पादन प्रणाली पर आरसी निर्माण का उपयोग नहीं करना चाहिए :) –

उत्तर

11

the documentation के अनुसार "जावा प्लेटफ़ॉर्म के प्रत्येक कार्यान्वयन को निम्न मानक वर्णों का समर्थन करने की आवश्यकता है ... यूएस-एएससीआईआईआई, आईएसओ -885 9 -1, यूटीएफ -8, यूटीएफ -16 बीई, यूटीएफ -16LE, यूटीएफ -16। " इसलिए मुझे संदेह है कि सूर्य ने यूटीएफ -8 समर्थन के बिना एक बिल्ड जारी किया है।

वास्तविक त्रुटि संदेश here से प्रतीत होता है, जो Xerces XML पार्सर का हिस्सा है। मुझे कल्पना है कि यह एक्सएमएल पार्सर है जहां समस्या आ रही है।

+3

मेरे उदाहरण में समस्या ओएसजीआई और क्लास-लोडर दृश्यता के उपयोग से उत्पन्न हुई।एकाधिक बंडलों ने जेरिस एक्सएमएल पार्सर को तुरंत चालू किया, लेकिन चरित्र सेट परिभाषाओं को खोजने में असफल रहा क्योंकि उन संसाधनों को दिखाई नहीं दे रहा था। –

+0

कृपया उन संकुल को दें जो दिखाई नहीं दे रहे थे। आपको कौन से पैकेज दिखाना पड़ा? –

+2

यदि यह समाधान है, तो यह समस्या का समाधान कैसे किया गया? क्या आप कृपया निर्दिष्ट कर सकते हैं कि आपने क्या किया है? लॉगिंग सिस्टम में फ्यूज ईएसबी 4.4 में समस्या आई है। –

7

निम्नलिखित कार्यक्रम का प्रयास करें:

import java.nio.charset.Charset; 

public class TestCharset { 
    public static void main(String[] args) { 
     System.out.println(Charset.forName("UTF-8")); 
    } 
} 

इस एक अपवाद फेंकता है, तो वहाँ कुछ अपने JDK साथ कुछ गड़बड़ है। यदि यह "यूटीएफ -8" प्रिंट करता है तो आपका जेडीके ठीक है, और आपका एप्लिकेशन कुछ अजीब कर रहा है।

यदि ऐसा है, तो अपने ऐप को डीबगर के नीचे चलाएं, और http://www.java2s.com/Open-Source/Java-Document/XML/xalan/org/apache/xml/serializer/ToStream.java.htm में ब्रेकपॉइंट डालें - यह जगह यह चेतावनी दी गई है, और यह देखने के लिए कदम क्यों Xalan एन्कोडिंग नहीं ढूंढ सकता।

2

शायद अधिकतर किसी ने पकड़ लिया है() केवल असमर्थित एन्कोडिंग अपवाद होने की उम्मीद है, इसलिए उसने उचित संदेश का उपयोग किया। लेकिन उन्होंने बहुत व्यापक अपवाद विनिर्देश (उदाहरण के लिए पकड़ (अपवाद पूर्व)) का उपयोग किया है, इसलिए जब रनटाइम पर उसे कुछ और मिला (गैर-मान्य एक्सएमएल, एनपीई, ...) संदेश भ्रामक हो गया।

0

एक अलग (स्थिर रिलीज) JVM आज़माएं। मुझे एक बार यह समस्या थी और यह पता चला कि मशीन बीटा संस्करण जेवीएम चला रही है जो वास्तव में यूटी डॉक्स में आवश्यकता के विपरीत यूटीएफ -8 का समर्थन नहीं करती थी।

0

यह डैश के बिना "यूटीएफ 8" होना चाहिए।

+2

दान डायर के जवाब को देखते हुए, मुझे नहीं लगता कि यह मामला है। क्या आपके पास कोई संदर्भ है? –

+0

माइकल सही है - तरह का। जेडीके स्रोतों ने विभिन्न एनआईओ, एनआईओ 2, और सामान्य आईओ पैकेजों में मिश्रित यूटीएफ 8 और यूटीएफ -8 संदर्भों को मिश्रित किया है। वास्तव में काफी भयानक। –

0

जब एक ट्रांसफार्मर का उपयोग कर आप इस संदेश को मिल रहे हैं, TransformerFactory निर्दिष्ट करने के लिए प्रयास करें:

link

संबंधित मुद्दे