पैकेज आर मौजूद नहीं है


114

मुझे मिल रहा है खूंखार पैकेज Rमौजूद नहीं है, यह मुझे मार रहा है। कोड ठीक है मेरे पास कोड चलाने वाले बाज़ार में ऐप हैं।

अब यह सरल webviewअनुप्रयोगों को प्रभावित कर रहा है । o.0

R.string.app_nameत्रुटि है मेरी main.xmlऔर string.xmlठीक है। मैं sooo उलझन में हूँ।

मैंने "borrow"कुछ कोड के लिए एक पुराना संस्करण खोला और इससे R. errors.मैं एक साफ-सुथरा हो गया और R.androidशीर्ष पर जोड़े जा रहे आयात के अलावा कुछ भी नहीं बदला ।

मैंने नेटबियंस में भी लोड किया और मुझे वही मिला। साफ काम नहीं कर रहा है। क्या मैं R.javaखुद फाइल लिख सकता हूं?

यह क्या Rचीज है? नहीं है R। पत्राचार करने वालाR.java


1
किसी भी त्रुटि के लिए Res फ़ोल्डर की जाँच करें, अगर आपके पास पुस्तकालय में जाँच के रूप में कुछ परियोजनाएँ हैं, तो भी
सनी कुमार आदित्य

1
Alt + को सेट करें पर क्लिक करें setContentView (R.layout ... आयात जोड़ने के लिए लाइन।
लाइव-लव

जवाबों:


127

जो कोई भी इसमें भाग गया, मैंने नामस्थान फ़ोल्डर का नाम बदलकर रिफैक्ट किया। मैं अभी AndroidManifest को संपादित करना भी भूल गया और इसीलिए मुझे यह त्रुटि मिली।

सुनिश्चित करें कि आप इसे भी जाँचते हैं।


1
ऐसा लगता है कि मैं केवल अपनी गतिविधि कक्षाओं के भीतर से आर का उपयोग करने में सक्षम हूं। मुझे अन्य कक्षा फ़ाइलों से इसे एक्सेस करने का प्रयास करने में यह त्रुटि हो रही थी।
जो लैप

84

बस इसे सरल बनाने के लिए:

import your.app.package.R;

बेशक, your.app.packageअपने ऐप पैकेज के साथ बदल रहा है ।

सभी वर्गों में जो आर संसाधन संदर्भों का उपयोग करते हैं, किसी भी अन्य को हटा दें , अर्थातimport.Rimport android.R;


3
कॉर्डोवा का उपयोग करते समय, यह उचित समाधान है। कॉर्डोवा 3.0.9 के साथ परीक्षण किया गया
पीटर

1
दरअसल, मेरी गलती है। यह कॉर्डोवा परियोजना को ठीक से बनाने की अनुमति देता है, हालांकि स्प्लैश स्क्रीन अभी भी दिखाई नहीं देता है ... इसलिए यह समाधान वास्तव में मुद्दे को हल नहीं करता है।
पीटर

एक एंड्रॉइड स्टूडियो मॉड्यूल के लिए एक ग्रहण परीक्षण परियोजना को परिवर्तित करते समय मुझे यही करना चाहिए।
RightHandedMonkey

यदि आप फोनगैप का उपयोग कर रहे हैं और अपने प्लगइन्स फ़ाइल के अंदर उपरोक्त आयात विवरण जोड़ रहे हैं, तो प्लेटफ़ॉर्म को निकालना और फिर से जोड़ना सुनिश्चित करें। इस तरह phonegap platform remove androidऔरphonegap platform add android
Fawaz

54

टीएल; डीआर , यदि आपको "पैकेज आर मौजूद नहीं है" त्रुटि मिलती है, तो संभावित कारण हैं

  • XML संसाधन फ़ाइलों में कुछ त्रुटि
    -> XML त्रुटियों को ठीक करें
  • वर्तमान पैकेज पैकेज से अलग है R( package AndroidManifest.xml में विशेषता देखें )
    -> आयात Rवर्ग, उदा import com.example.android.R;
    -> या अपने स्रोत में उपयुक्त पैकेज का उपयोग करें, जैसे package com.example.android;
    -> या यदि उपयुक्त हो तो AndroidManifest.xml में पैकेज विशेषता बदलें।<manifest xmlns:android="..." package="com.example.android" ...>
  • उपयोग की गई Rआईडी सिस्टम संसाधनों से हैं
    -> आयात नहीं करते हैं android.R, लेकिन आप के साथ अपमानजनक आईडी उपसर्ग करते हैं android., उदाहरण के लिए, android.R.layout.simple_list_item_2
    आप android.Rबेशक आईडी के उपसर्ग करने के बजाय आयात कर सकते हैं, लेकिन तब आप आवेदन Rवर्ग को अब और आयात नहीं कर सकते हैं और आवेदन आईडी को उपसर्ग करना चाहिए, जैसे। com.example.android.R.id.main_menu

R वर्ग आवेदन के संसाधनों से स्वचालित रूप से उत्पन्न होता है। इसमें idइन संसाधनों के लिए एस होता है और <manifest> संबंधित AndroidManifest.xmlफाइल में टैग में नामित पैकेज में निहित होता है ।

यदि संसाधन XML फ़ाइलों में कोई त्रुटि नहीं है, तो R.javaस्रोत नीचे दिए गए पैकेज उपनिर्देशिका में gen/संकलित किया जाएगा।


पैकेज Rमें एक और वर्ग स्थित है android। इस android.Rवर्ग में कुछ नेस्टेड वर्ग होते हैं, जो सिस्टम संसाधनों के बदले में ids और अन्य मान रखते हैं ।


जावा में एक वर्ग का उपयोग करने के लिए, आपको पूरे पैकेज के साथ वर्ग का नाम देना होगा, जैसे

java.util.List<Object> list = new java.util.ArrayList<Object>();

या कक्षा का आयात करें और फिर पैकेज के बिना उसका उपयोग करें

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

आप पैकेज का नाम लिए बिना भी एक वर्ग का उपयोग कर सकते हैं, यदि वर्तमान वर्ग और प्रयुक्त वर्ग दोनों एक ही पैकेज में हैं, जैसे

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}

1
मेरे मामले में, समस्या क्लासपैथ 'com.android.tools.build:gradle:3.3.0' थी। मैंने इसे क्लासपाथ 'com.android.tools.build:gradle:3.2.1' में बदल दिया और समस्या हल हो गई।
मोहित राजपूत

25

कभी, कभी आर क्लास खुद लिखने की कोशिश करो!

क्या आपने अपनी फ़ाइलों में सही R वर्ग आयात किया है?

करते हुए

import android.R;

के बजाय

import com.example.R;

बहुत सारे लोगों के लिए समस्या प्रतीत होती है। सफाई और निर्माण के बाद, मेरी कक्षाएं कभी-कभी गलत आयात करती हैं।


3
लेकिन मुझे यह समझ में नहीं आता है कि आर बात तब नहीं थी जब मैंने शुरू में कोडिंग की थी और कार्यक्रम का अनुपालन किया था।
ताज़ रायडर

12

यदि आप एंड्रॉइड स्टूडियो में विकसित कर रहे हैं और पैकेज नाम को फिर से सक्रिय कर दिया है तो आपको पैकेज का नाम एंड्रॉइड मेनिफ़ेस्ट और ऐप ग्रेड फ़ाइल में बदलना चाहिए।

 applicationId "change here your package name"

और मैनिफ़ेस्ट फ़ाइल में

 package="change here your package name"

हां। उदाहरण के लिए, ऐप नाम का थोड़ा अलग पूंजीकरण।
स्टीव व्हाइट

9

R.java एक ऑटोजेनरेटेड फ़ाइल है, यह आमतौर पर संकलित नहीं होता है यदि आपके पास xml फ़ाइल में त्रुटियां हैं।

नहीं, आप अपनी R.java फ़ाइल नहीं लिख सकते, इसे संसाधन संकलक द्वारा जनरेट किया जाना है।

अपनी सभी xml फ़ाइलों में त्रुटियों के लिए जाँच करें।


1
किस तरह की त्रुटियां हैं और एक शुरुआतकर्ता को उन्हें कैसे देखना चाहिए?
user1725145

6

आपकी XML फ़ाइलों (यूआई लेआउट, अंतर्राष्ट्रीयकरण तार, आदि) से आर क्लास जावा कोड ऑटो-जेनरेट किया जाता है। यदि कोड पहले (जैसा लगता है कि यह काम कर रहा है) इस्तेमाल किया जा रहा है, तो आपको किसी भी तरह से इन फाइलों को फिर से बनाने के लिए अपनी आईडीई को बताने की आवश्यकता है। :

  • IntelliJ में, उपकरण> Android> <प्रोजेक्ट> के लिए स्रोत उत्पन्न करें चुनें
  • (यदि आप किसी अन्य आईडीई में रास्ता जानते हैं, तो इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें!)

यह मैं खोजा गया ans था। धन्यवाद .. +1
अधिकाँश बिश्वाश

5

मुझे लगता है कि यह काम करता था, लेकिन अब यह नहीं है ..

यदि आप अपने MANIFEST फ़ाइल के अंदर पैकेज का नाम बदलते हैं तो यह हो सकता है

<manifest
   package="com.example.android...."

अगर आप पैकेज का नाम बदलना चाहते हैं

  1. मैनिफ़ेस्ट फ़ाइल में मैन्युअल रूप से पैकेज का नाम बदलें।
  2. अपने R.java वर्ग और प्रेस F6 पर क्लिक करें। यह आपको कक्षा को अन्य पैकेज में स्थानांतरित करने की अनुमति देगा, और उस वर्ग के सभी संदर्भ अपडेट किए जाएंगे।

आप एक भगवान हैं! मैं से अपने प्रोजेक्ट बदल रहा था com.example.rickydam.txtbooksकरने के लिए com.txtbooks.txtbooksएक नई परियोजना बनाने के द्वारा और मैं नई परियोजना के लिए खत्म हो सब कुछ ले जाया गया, लेकिन यह आर मैं नहीं पा सके कैश अमान्य, Gradle के साथ समन्वयन करना, परियोजना की सफाई, परियोजना के पुनर्निर्माण, फिर से स्थापित करने एसडीके-उपकरण की कोशिश की ... कुछ भी काम नहीं कर रहा था! लेकिन आपके समाधान ने मेरी समस्या तय कर दी! एक बार फिर धन्यवाद! कोडिंग पर रखें!
रिकी डैम

4

Android एप्लिकेशन बनाने के लिए Bazel का उपयोग करते समय मैं सिर्फ इस त्रुटि में भाग गया:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

सुनिश्चित करें कि आपका android_library/ सही विशेषता के साथ android_binaryउपयोग कर रहा है , और यदि आप विशेषता का उपयोग कर रहे हैं या , यह सुनिश्चित करें कि यह सही ढंग से वर्तनी है।AndroidManifest.xmlpackage=custom_packageandroid_libraryandroid_binary


3

आयात android.R हटाएं; सभी फाइलों से .. एक बार प्रोजेक्ट को साफ करें और प्रोजेक्ट बनाएं .... यह उत्पन्न करेगा


3

नमूना: मेरा पैकेज com.example.mypc.f01 है , त्रुटि को ठीक करने के लिए आप गतिविधि के लिए नीचे पंक्ति जोड़ें:

import com.example.mypc.f01.R;


3

नीचे कुछ टेकनीक दी गई हैं जिनका उपयोग करके आप इस त्रुटि को दूर कर सकते हैं: -

  1. अपने प्रोजेक्ट को साफ करें, Buidl-> स्वच्छ परियोजना
  2. पुनर्निर्माण परियोजना, निर्माण -> पुनर्निर्माण परियोजना
  3. खुला प्रकटन और जाँच क्या कोई संसाधन गायब है
  4. चेक-इन लेआउट विशेष रूप से आईडी में यदि अनुपलब्ध है तो उसे जोड़ें
  5. यदि उपरोक्त चरण काम नहीं करते हैं, तो कैश को अमान्य करने के साथ एंड्रॉइड स्टूडियो को पुनरारंभ करें

2

मेरे मामले में मुझे एहसास हुआ कि मैं इस परियोजना में कई पैकेज बना रहा था। एंड्रॉइड मेनिफेस्ट के भीतर मैंने पाया कि प्रदाता नाम गलत तरीके से .provider.MyContentProvider के बजाय MyContentProvider के मान को पकड़े हुए था। मेरा मुख्य पैकेज (UI के साथ) co.companyname.database के बजाय co.companyname.database.provider था।

फिर प्रभावित वर्ग के लिए आयात बयानों पर मैंने बस अपने आयात के बयानों को अनुकूलित करने के लिए एंड्रॉइड स्टूडियो (0.8.6) से राइट-क्लिक किया और पूछा। मैंने यह भी नोट किया है कि यदि आप खोज करते हैं। ID के ऊपरी दाएं कोने में AS सर्च बार में .R आप एक ऑटो जनरेटेड R.java फाइल पा सकते हैं जो आपके पैकेज का हिस्सा है। इस बिंदु पर आपको कुछ भी बदलने की आवश्यकता नहीं है। एंड्रॉइड मेनिफेस्ट फ़ाइल को सही करने और पुनर्निर्माण के बाद स्टूडियो को प्रोजेक्ट को ठीक करना चाहिए।

एक अन्य आइटम यह है कि एक कक्षा में मैं एक स्ट्रिंग का मूल्यांकन करने के लिए .String () लंबाई () का उपयोग कर रहा था, लेकिन TextUtils.IsEmpty (stringVal) के लिए उन लोगों को स्वैप किया। इस मुद्दे को हल करने के लिए मैंने जो कुछ किया उसके बारे में सोच भी नहीं सकता।

आशा है कि यह किसी की मदद करता है।

एनबी - यह सब 0.8.6 के साथ है

पुनश्च

R.java स्वतः उत्पन्न होता है इसलिए हेडर पढ़ें: / * AUTO-GENERATED FILE। आधुनिक मत बनो। * * यह वर्ग स्वचालित रूप से उत्पन्न डेटा संसाधन * aapt उपकरण द्वारा उत्पन्न किया गया था। इसे * हाथ से संशोधित नहीं किया जाना चाहिए। * /


2

जब मुझे यह अनुभव हुआ, तो मैंने एक नया प्रोजेक्ट बनाया, और अपने पुराने प्रोजेक्ट से फाइलों को अपने नए में कॉपी किया।

  1. एक नई परियोजना शुरू करें
  2. नए प्रोजेक्ट में पुरानी फ़ाइलों को जोड़ें (कॉपी और लेआउट पर राइट क्लिक करें, ड्रॉबल्स, com.packagename, ...) को अपनी पुरानी पुरानी फ़ाइलों को पेस्ट करने के लिए

हालाँकि, मुझे अभी भी यही समस्या थी R does not exist:। तब मुझे एहसास हुआ कि मैंने अपने नोटपैड से मैनिफेस्ट को एंड्रॉइड स्टूडियो मैनिफेस्टों में कॉपी और पेस्ट किया था और मैंने मैनिफ़ेस्ट फ़ाइल में पैकेज का नाम नहीं बदला था।

इसलिए, एक बार जब मैंने पैकेज का नाम नए प्रोजेक्ट के नाम में बदल दिया, तो जो नया प्रोजेक्ट मैंने बनाया, वह ठीक काम कर रहा था।


1

R त्रुटि हो रही फ़ाइलों में आप कौन सी फ़ाइलें आयात कर रहे हैं?

आर फ़ाइल की मेरी समझ यह है कि वे एंड्रॉइड ऐप के भीतर सभी विशेषताओं के लिए स्वचालित रूप से संदर्भ सूची तैयार करते हैं। इसलिए, आप इसे स्वयं नहीं बदल सकते।

क्या आप इस परियोजना के निर्माण के लिए ग्रहण का उपयोग कर रहे हैं? क्या ग्रहण को अद्यतन करने से पहले की गई पुरानी परियोजनाओं में ये त्रुटियां थीं? ऐसे कौन से संदर्भ हैं, जिनमें त्रुटियां हो रही हैं?

यह सुनिश्चित करने के लिए जांचें कि आपने दूसरे कॉपी किए गए कोड से किसी अन्य एप्लिकेशन में दूसरी आर फ़ाइल आयात नहीं की है।


मेरे पास R मुद्दे हैं जब AndroidManifest.xml फ़ाइल और प्रोजेक्ट। प्रोजेक्ट के भीतर फ़ाइल फ़ाइल उसी लक्ष्य / Android के न्यूनतम संस्करण को प्रदर्शित नहीं कर रही हैं।
संगीत बंदर

1

मैं हर बार कंप्यूटर स्विच करने और USB के माध्यम से स्थानांतरित फ़ाइलों से पुरानी परियोजनाओं को आयात करने का प्रयास करता हूं।

मेरा वर्कअराउंड एक नया प्रोजेक्ट बनाना है और आईडीई (वर्तमान में नेटबीन्स का उपयोग करके) और पुनर्निर्माण के लिए फाइलों को कॉपी (ड्रैग) करना है। यह एक झुंझलाहट और थोड़ा हैसी समाधान है, लेकिन यह समस्या को ठीक करता है।

यदि आपके साथ ऐसा होता है, तो सबसे खराब स्थिति यह है कि आपको अपनी फ़ाइलों का बैकअप लेना पड़ सकता है, परियोजना को हटा सकते हैं, और बस फ़ाइलों को वहाँ खींचकर पुनः स्थापित कर सकते हैं। उम्मीद है कि यह उस पर नहीं आएगा लेकिन यह आपका परमाणु विकल्प होगा।


1

आप कोशिश कर सकते हैं

Android Studio शीर्ष मेनू> फ़ाइल> अमान्य कैश / पुनरारंभ करें ...

अपना प्रोजेक्ट पुनः आरंभ करने के लिए अमान्य कैश / पुनरारंभ करें बटन पर क्लिक करें

R.xxxx.xxx को फिर से हल करें यदि कुछ विखंडन वर्ग R वर्ग ठीक से हल नहीं हुआ

फिर अपने प्रोजेक्ट का पुनर्निर्माण करें

आशा करता हूँ की ये काम करेगा


0

यदि आप एंड्रॉइड स्टूडियो में इस त्रुटि का सामना करते हैं:

ग्रैड्यूल मॉड्यूल फ़ाइल (ओं) की जांच करें -> defaultConfig -> applicationId सेटिंग।

AndroidManifest.xml -> प्रकट पैकेज टैग की जाँच करें।

सभी src जावा फाइलों में पैकेज घोषणाओं की जाँच करें।

सिंक, स्वच्छ फिर ग्रेड के साथ पुनर्निर्माण।

कभी भी अपनी खुद की R फाइल न बनाएं। R आपके स्रोत जावा फाइलों से ऑटो-जेनरेट होता है और सेटिंग्स का निर्माण करता है।


0

मेरे पास था: "त्रुटि: पैकेज आर मौजूद नहीं है" और माना कि जेएवीएसी की आरजेवा तक पहुंच नहीं है।
इसलिए मैंने sourcepath पर% PROJ_LOC% \ gen जोड़ दिया, और यह काम कर गया! Sourcepath =% PROJ_LOC% \ src;% PROJ_LOC% \ जनरल

मैं एंड्रॉइड स्टूडियो या एंट (या एक्सएमएल) का उपयोग नहीं कर रहा हूं।



0

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

इस त्रुटि का सबसे संभावित कारण 'पैकेज आर मौजूद नहीं है' यह है कि जावा या मैनिफ़ेस्ट फ़ाइल में पैकेज का नाम गलत है। सुनिश्चित करें कि यह सही है और सिंक में है और फिर एक साफ निर्माण करें।


0

कभी-कभी, यह हल हो जाता है जब आप प्रोजेक्ट को केवल एंड्रॉइड स्टूडियो में पुनः आयात करते हैं।


0

गलत पथ: प्रोजेक्ट "कैश" छवियों को इंगित करता है और यदि आपने उदाहरण के लिए पथ में नाम परिवर्तन किए हैं तो पैकेज या फ़ोल्डर्स को रिफलेक्ट किया गया है। फिर बस आर अक्षर को फिर से लिखें और संपादक सही रास्ता सुझाता है और यह काम करेगा। इस स्थिति में आपके फ़ाइल नाम सही हैं और सामग्री जो R. पॉइंटर में बताई गई है वह मौजूद है, लेकिन रास्ता गलत है, इस प्रकार साफ और निर्माण काम नहीं करेगा।


0

आर। टूट का एक और मामला एनोटेशन प्रोसेसिंग है

कुछ प्रसंस्करण कुछ फ़ोल्डर्स या फ़ोल्डर स्तरों में स्थित कक्षाओं को संदर्भित कर सकते हैं। यदि आप आवश्यक कक्षाओं को अन्य स्थान पर स्थानांतरित करते हैं, तो आप आर को एक अज्ञात वर्ग के रूप में प्राप्त कर सकते हैं ।

दुर्भाग्य से एंड्रॉइड स्टूडियो में इस समस्या के लिए त्रुटि-सूचक स्पष्ट नहीं है।


0

R.java को लिखने का कोई लाभ नहीं है क्योंकि यह प्रत्येक बिल्ड पर बदल जाता है,

उदाहरण के लिए R.something का उपयोग करना याद रखें : R.raw.filename उन वर्गों के अंदर है जिनका पैकेज मान AndroidManifest.xml के अंदर पैकेज मान के समान है।

क्योंकि R. संसाधन ID को वर्तमान एप्लिकेशन या लाइब्रेरी के लिए परिभाषित किया गया है और वे सभी चेक किए गए हैं यदि संकलन समय पर मौजूद हैं, तो उन्हें "कोड" से एक्सेस करने की अनुमति देने का कोई मतलब नहीं है जो वर्तमान एप्लिकेशन या लाइब्रेरी को लक्षित नहीं करता है और कर सकता है अन्य स्थानों पर उपयोग किया जा सकता है।



-2

मैं अपनी समस्या हल करता हूं:

पैकेज आर मौजूद नहीं है

गोटो AndroidManifest.xmlफ़ाइल और minSDKVersion="17"19 से बदल दिया है


क्षमा करें मैं असहमत हूं। वर्तमान मानकों के अनुसार आपके पास AndroidManifest.xml फ़ाइल में minSDKVersion नहीं होना चाहिए। यदि आपके पास यह है तो इसे AndroidManifest.xml फ़ाइल से हटा दें यह अनावश्यक कोड है। MinSDKVersion और targetSdkVersion को केवल build.gradle फ़ाइल में परिभाषित किया जाना चाहिए।
अजय बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.