2013-02-23 87 views
14

तो सब कुछ काफी अच्छी तरह से जा रहा था "रेखांकित एकमात्र स्रोत स्तर 1.7 या अधिक से अधिक के साथ प्रयोग किया जा सकता है", बस थोड़ी देर पहले तक जब R.java इस त्रुटि का फैसला किया एक आइकन जोड़ने के बाद (5_content_new.png, सटीक होने के लिए)।अजीब त्रुटि, परियोजना की सफाई के बाद भी:

मैं परियोजना की सफाई और ग्रहण को पुन: प्रारंभ कोई लाभ नहीं हुआ, की कोशिश की है।

समस्या कोड:

public static final class drawable { 
    public static final int 5_content_new=0x7f020000; 
    public static final int ic_launcher=0x7f020001; 
    ... 
} 

लाल रेखा सही 5_ नीचे दिखाई देता है, और त्रुटि का कहना है:

Underscores can only be used with source level 1.7 or greater

किसी को भी इस से पहले की तरह कोई समस्या हुई है?

+1

परिवर्तनीय नामों को एक गैर-अंकों से शुरू होना चाहिए। एक अंक एक संख्या इंगित करता है, और संख्याओं में जावा 1.7 और उच्चतर में केवल अंडरस्कोर हो सकते हैं। –

उत्तर

23

यह दो चीजों में से एक संयोजन है:

  1. जावा पहचानकर्ता अंक के साथ शुरू नहीं कर सकते। पहला अक्षर एक पत्र होना चाहिए।

  2. जावा 7 में, वे पूर्णांक शाब्दिक के लिए वैकल्पिक वाक्यविन्यास शुरू की; जैसे 1_0001000 जैसा ही है।

तो क्या हो रहा है कि संकलक 5_ content_new रूप 5_content_new को पार्स किया जाता है ... जो उचित है यदि स्रोत स्तर जावा 7 था, और फिर आपको लगता है कि आप जावा 7. उपयोग नहीं कर रहे हैं, तो आप कह गया था जावा 7 का उपयोग करके, संकलन त्रुटि को एक त्रुटि द्वारा प्रतिस्थापित किया गया होगा जो कहता है कि उस बिंदु पर एक पूर्णांक शाब्दिक (5_) कानूनी नहीं था।

संक्षेप में, कोड कुछ इतना है कि संकलक लेखक संकलक नैदानिक ​​कोड में यह उम्मीद नहीं की थी "दीवार से" शामिल हैं।


अन्य मुद्दा यह है कि जावा में एक चर, विधि, वर्ग या पैकेज नाम में किसी भी अंडरस्कोर का उपयोग कर एक शैली उल्लंघन है। अंडरस्कोर का उपयोग केवल "MAX_VALUE" जैसे सभी कैप्स निरंतर नामों में किया जाना चाहिए।

+0

बहुत जानकारीपूर्ण! आरजेजा उत्पन्न होता है जब एक एंड्रॉइड प्रोजेक्ट बनाया जाता है, और निचला मामला + अंडरस्कोर संसाधनों के लिए उपयोग की जाने वाली स्टाइल लोगों के रूप में प्रतीत होता है। यह संभवतः ऐसा किया जाता है क्योंकि उन्हें एक्सएमएल में संदर्भित किया जाता है, हालांकि मैं सम्मेलनों का नामकरण करने का कोई अधिकार नहीं हूं :) –

+1

हाँ ... जेनरेट कोड में अच्छी शैली त्रुटियां दुर्भाग्यपूर्ण हैं, लेकिन आपको देखने की आवश्यकता नहीं है * यह। इस मामले में, ऐसा लगता है कि जेनरेट किए गए 'आर। जावा' में एक बग है ... –

+0

अंडरस्कोर का इस्तेमाल विभाजक के रूप में किया जा सकता है जहां ऊंट का मामला अच्छी तरह से काम नहीं करता है। जैसे कक्षा नाम के हिस्से के रूप में यूआरएल रखना। –

3

मैं अभी-अभी एक संकलन ठीक मेरा एंड्रॉयड परियोजना में पहले से मौजूद drawable का नाम बदलने की कोशिश की और ग्रहण अप इस संवाद फेंक दिया:

Eclipse Error (आप बहुत अच्छी तरह से छवि नहीं देख सकते हैं, संवाद बॉक्स है कह संसाधन नाम एक वर्ण से प्रारंभ होना।

तरह से है कि मैं का उत्पादन इस संवाद एक drawable फ़ाइल का नाम बदलने की गई थी। drawable के मूल नाम, button_blue_normal.9.png था 5_button_blue_normal.9.png को यह नाम दिया और दबाया दर्ज करें। संवाद तुरंत पॉप दबाने के बाद दर्ज करें।

मैं इस कभी नहीं जानता था लेकिन जाहिरा तौर पर आप एक drawable की फ़ाइल का नाम के बहुत शुरुआत में, एक पत्र-चरित्र, नहीं एक अंकों की आवश्यकता होगी।

+1

धन्यवाद! यह वास्तव में समझ में आता है, क्योंकि (iirc) परिवर्तनीय नाम जावा में संख्याओं से शुरू नहीं होने चाहिए। –

+0

आप बस शानदार हैं: डी: डी +1 –

1

मैं जानता हूँ कि मैं पार्टी के लिए देर हो रही है, लेकिन मैं सिर्फ अपने आप को इस में भाग जब मैं ActionBar घटक के साथ काम करना शुरू किया।

स्कूटरनोवा के जवाब ने मुझे समाधान का नेतृत्व किया। समस्या एंड्रॉइड-अनुशंसित आइकन पैक थी जिसे मैंने ट्यूटोरियल्स में उपयोग के लिए डाउनलोड किया था। सभी फाइलनाम पूर्णांक (1_xxx.png, आदि) के साथ शुरू हुए। मैंने उन लोगों को हटा दिया जिन्हें मैं उपयोग नहीं कर रहा था, दूसरों को एक पत्र के साथ शुरू किया गया था (मैंने उदाहरण के रूप में "icon_xxx.png" का उपयोग किया था), और यह त्रुटि के बिना संकलित किया गया था।

+0

हाँ, यह वही समस्या है जो मेरे पास थी। आइकन पैक में 5_content_new.png था –

1

मुझे एक ही समस्या थी और मैंने शुरुआत के बाद टेक्स्ट डालने के बाद अंक डालने के बाद इसे हल किया। मेरे पास लाइन 2_Activity थी और मैंने इसे गतिविधि 2 में बदल दिया। यह मेरा समाधान था। उम्मीद है कि यह किसी की मदद करेगा।

0

मुझे एक ही समस्या थी। संकल्प: res फ़ाइलों, drawlables या xml के अंदर देखें और स्ट्रिंग_1 के साथ शुरू होने वाली फ़ाइलों या तारों का नाम बदलें (संख्या अंडरस्कोर स्ट्रिंग) 1_string।

उम्मीद है कि यह समस्या को हल करने में मदद करता है।