ใน eclipse ไม่สามารถอ้างอิงโครงการห้องสมุด android ในโครงการ android อื่น


104

ในขณะที่ฉันเขียนคำถามนี้ฉันสามารถแก้ปัญหาได้ดังนั้นให้ทำซ้ำที่นี่เพื่อประโยชน์ของผู้อื่น นี่คือปัญหาเบื้องต้น:

ฉันได้สร้างโครงการห้องสมุดที่เรียบง่ายมากซึ่งฉันต้องการอ้างอิงในโครงการอื่น ฉันได้ทำสิ่งนี้ก่อนหน้านี้โดยไม่มีปัญหาดังนั้นจึงไม่แน่ใจว่าทำไมครั้งนี้จึงไม่ทำงาน ฉันมี:

  1. ตั้งค่าสถานะโปรเจ็กต์ไลบรารีผ่านคุณสมบัติโปรเจ็กต์ default.propertiesไฟล์มีชุดนี้:android.library=true

  2. ในโครงการอื่นของฉันเพิ่มการอ้างอิงไปยังโครงการห้องสมุดของฉันผ่านคุณสมบัติของโครงการ default.propertiesไฟล์อ้างอิงเพิ่มเป็นเช่นคาดว่าandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. ขีดสีเขียวเทียบกับโปรเจ็กต์ไลบรารีที่อ้างอิงจะเริ่มเป็นสีเขียวจากนั้นเปลี่ยนเป็นกากบาทสีแดง

นี่เป็นนัยว่าต้องมีบางอย่างผิดปกติ / ขาดหายไปจากโครงการห้องสมุด แต่ฉันไม่รู้ว่าอะไร โครงการห้องสมุดของฉันในครั้งนี้ง่ายกว่าโครงการก่อนหน้านี้ที่ฉันสร้างขึ้นมาก


โซลูชันนี้ช่วยในกรณีของฉัน: stackoverflow.com/questions/9283040/… ฉันหวังว่ามันจะช่วยใครสักคน
Abeer Sul

คำตอบ:


160

ตกลงนี่คือวิธีแก้ปัญหาที่ฉันพบเมื่อฉันกำลังมองหาไฟล์ default.properies ของโครงการอ้างอิง (ไม่ใช่ไลบรารี) ในระบบไฟล์ของฉัน แม้ว่าโปรเจ็กต์การอ้างอิงจะอยู่ในเวิร์กสเปซ eclipse เดียวกันกับโปรเจ็กต์ไลบรารีไฟล์จริงก็อยู่ที่อื่นในระบบไฟล์นั่นคือไม่ได้อยู่ในโฟลเดอร์พาเรนต์เดียวกันของไลบรารีโปรเจ็กต์ ทันทีที่ฉันวางโปรเจ็กต์อ้างอิงในโฟลเดอร์ฟิสิคัลเดียวกันกับโปรเจ็กต์ไลบรารีทุกอย่างก็เรียบร้อย

ฉันเดาว่านี่ต้องเกี่ยวกับ android โดยใช้มดอยู่ใต้ฝาครอบ

แก้ไข: ชื่อโปรเจ็กต์ต้องตรงกับชื่อโฟลเดอร์บนระบบไฟล์ สิ่งที่คุณเห็นใน Project Properties-> Android-> Library Reference คือพา ธ ของระบบไฟล์แบบสัมพัทธ์


3
นอกจากนี้ยังต้องการเพิ่มลิงก์สัญลักษณ์นั้นไม่เหมาะสำหรับสิ่งนี้ ฉันมีโปรเจ็กต์ทั้งหมดของฉันเก็บไว้ในโฟลเดอร์เดียวกันในตำแหน่งอื่น (ซึ่งฉันใส่สิ่งที่ฉันต้องการสำรองไว้) จากนั้นลิงก์สัญลักษณ์มากมายภายในโฟลเดอร์พื้นที่ทำงานของฉันไปยังโฟลเดอร์เหล่านี้ ดังนั้นพวกเขาทั้งหมดจึงอยู่ในโฟลเดอร์เดียวกันในทั้งสองแห่งอย่างไรก็ตามการใช้ลิงก์สัญลักษณ์ทำให้ทุกอย่างยุ่งเหยิง เมื่อฉันโหลดโฟลเดอร์จริงเป็นพื้นที่ทำงานพื้นฐานของฉันมันก็เรียบร้อยดี
Zulaxia

7
+1 สำหรับการอธิบายพฤติกรรมที่น่ากลัวนี้ของคอมโบ Eclipse / ADT เพียง FYI แม้การวางโครงการทั้งในโฟลเดอร์ทางกายภาพเดียวกันไม่ได้ช่วยถ้าโฟลเดอร์ที่เกิดขึ้นจะเป็นในส่วนแบ่งแซมบ้า Ugrrr ...
an00b

20
บางครั้ง Eclipse จะลบการอ้างอิงรีสตาร์ท eclipse และเพิ่มอีกครั้งตอนนี้ควรใช้งาน
Warpzit

นี่เป็นปัญหาสำหรับโครงการของฉันที่เป็นของและอยู่ในพื้นที่ทำงานเดียวกัน นำเข้าโครงการในพื้นที่ทำงานเดียวกับไลบรารีและทุกอย่างทำงานได้ดี ขอบคุณสำหรับคำตอบ.
Jayshil Dave

ตรวจสอบว่าพื้นที่ทำงานและไลบรารีของคุณอยู่ในตำแหน่งโฟลเดอร์เดียวกัน ทำผิดพลาดในการดาวน์โหลด ADT อีกครั้งและสร้างโปรเจ็กต์ภายใต้พื้นที่ทำงาน C: \ users ซึ่งตรงข้ามกับพื้นที่ทำงานจริงของฉัน ไม่จำเป็นต้องพูดให้ตรวจสอบอีกครั้งว่าโครงการของคุณและห้องสมุดของคุณอยู่ในไดเรกทอรีการทำงานเดียวกัน!
Garbit

11

ตรวจสอบให้แน่ใจว่าทั้งสองโครงการอยู่ในพื้นที่ทำงานเดียวกัน ในการดำเนินการนำเข้าโครงการให้ตรวจสอบว่าได้เลือกช่องทำเครื่องหมาย "คัดลอกโครงการลงในพื้นที่ทำงาน"


1
ฉันจะใช้โปรเจ็กต์ไลบรารีเดียวกันกับโปรเจ็กต์อื่นได้อย่างไร ถ้าทำก็จะแสดงสัญลักษณ์กากบาทสีแดง .. @Karthik
Shylendra Madda

10

ปัญหาเดียวกันนี้จะเกิดขึ้นหากโปรเจ็กต์ไลบรารีของคุณอยู่ในพาร์ติชันอื่นจากพื้นที่ทำงานปัจจุบันของคุณ ตอนนี้ฉันมีปัญหาเดียวกัน แหล่ง git ของฉันอยู่ใน C: และฉันเพิ่งย้ายพื้นที่ทำงานไปที่ D: และทุกอย่างก็เริ่มยุบ


4
หากโปรเจ็กต์หลักและไลบรารีอยู่บนไดรฟ์ที่แตกต่างกันดูเหมือนว่า Eclipse จะไม่สามารถแก้ไขพา ธ อ้างอิงจากค่าสัมบูรณ์ไปเป็นสัมพัทธ์ได้และ Eclipse ไม่พอใจกับมัน (ขีดสีเขียวจะเปลี่ยนเป็นกากบาทสีแดง)
ปัง

ทำงานให้ฉันด้วย ฉันเปลี่ยนโครงการอ้างอิงในไดรฟ์เดียวกัน (H :) และตอนนี้ก็โอเค
Tobia Zambon

4

วิธีที่ง่ายที่สุดในการทำให้เส้นทางไลบรารีถูกต้องคือการใช้ GUI จาก Eclipse เพื่อเพิ่มไลบรารีดังที่แสดงในภาพหน้าจอต่อไปนี้และให้ Eclipse ดูแลการวางพา ธ สัมพัทธ์ที่ถูกต้องใน project.properties เป็นการตั้งค่าทั่วไปเพื่อให้โครงการห้องสมุดของคุณโฮสต์ในไดเรกทอรีที่แตกต่างจากโครงการหลักของคุณที่ใช้ห้องสมุด วิธีนี้จะใช้ได้ผลถ้า "โครงการ libary" และโครงการที่ใช้อยู่ใน "พื้นที่ทำงาน" ของคราสเดียวกัน (ไม่จำเป็นต้องอยู่ในโฟลเดอร์หลักเดียวกัน): ป้อนคำอธิบายภาพที่นี่


4
ปัญหาเกิดจากไลบรารีและโปรเจ็กต์อยู่ในไดรฟ์ / พาร์ติชันที่แตกต่างกัน ... ดูรายการข้อบกพร่องด้านบน ไม่เป็นไรเพราะเส้นทางห้องสมุดของคุณแสดงเส้นทางสัมพัทธ์แทนที่จะเป็นเส้นทางเต็มของ DOS ...
kenyee

3

โปรดตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายโครงการห้องสมุดเป็น "Is Library" - คลิกขวาที่โครงการห้องสมุด - คุณสมบัติ - Android - ทำเครื่องหมายที่ช่อง "Is Library" - ใน project.properties ของโครงการห้องสมุดคุณควรมีรายการใหม่: "android .library = true ตอนนี้เพิ่มลงในโปรเจ็กต์ที่คุณต้องการตามที่อธิบายไว้ในโพสต์ด้านล่าง (โพสต์ที่มีรูปภาพรวม - จาก Nilesh Pawar)


1
สิ่งนี้ใช้ได้ผลดีสำหรับฉัน ส่วนที่สับสนคือฉันคิดว่าตำแหน่งของช่องทำเครื่องหมาย "Is Library" นี้ ไม่เข้าใจง่ายว่านี่เป็นการเลือกเป้าหมายของการสร้างแอพ / ไลบรารีปัจจุบันไม่ใช่สวิตช์ตัวเลือกสำหรับไลบรารีที่จะรวม
EtienneSky

3

ข้อผิดพลาดนี้มีการอ้างอิงหลายครั้งที่นี่27199 , 35786 , 36460และ38052

บางทีการโหวตให้พวกเขาจะได้รับการแก้ไขในวันหนึ่ง ...


2

อีกข้อสังเกตในประเด็นเดียวกัน

สำหรับฉันสองโปรเจ็กต์ที่อยู่ในโฟลเดอร์หลักเดียวกันและทั้งสองอยู่ในเครื่องภายในพื้นที่ทำงาน ถึงอย่างนั้นปัญหาก็ยังคงเกิดขึ้น

ฉันแก้ไขไฟล์ "project.properties" และใส่พา ธ สัมบูรณ์ (พร้อมเครื่องหมายทับ '/' สำหรับตัวแยก) ของโปรเจ็กต์ไลบรารี บันทึกและปิดมัน จากนั้นไปที่กล่องโต้ตอบคุณสมบัติของโปรเจ็กต์ลบไลบรารี (ซึ่งยังคงแสดงไอคอนกากบาท แต่มีเส้นทาง abs) และเพิ่มกลับตามปกติ น่าแปลกใจที่ปัญหาได้รับการแก้ไขและโครงการรวบรวมและดำเนินการ

นี่เป็นเรื่องแปลกจริงๆและต้องเป็นบั๊กกับ ADT ฉันใช้ ADT เวอร์ชัน 20.0.2


+1. ประสบปัญหานี้ในขณะที่เปลี่ยนไลบรารีที่มีชื่อเดียวกัน ดูเหมือน eclipse (หรือ ADT) พยายามอ้างถึงอันเก่าและล้มเหลว การรีสตาร์ท Eclipse ช่วยได้ (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

เมื่อนักพัฒนาอ้างถึง facebook หรือโครงการไลบรารีอื่น ๆ ก่อนอื่นให้ล้างโปรเจ็กต์จาก eclipse-> project-> clean project ที่ต้องการให้ข้อผิดพลาดของกากบาทสีแดงในหน้าจออ้างอิง


2

สำหรับฉันฉันเพิ่งรีสตาร์ท eclipse และไลบรารีที่เพิ่มเข้ามาก็ทำงานได้ดี

ฉันหมายถึงครั้งแรกที่มีรอยแดงหลังจากเพิ่มโครงการห้องสมุด แม้ว่าโปรเจ็กต์หลักของ eclipse และไลบรารีโปรเจ็กต์จะอยู่ในโฟลเดอร์เวิร์กสเปซเดียวกันและไม่มีไฟล์รีซอร์สอยู่นอกโฟลเดอร์โปรเจ็กต์

ดังนั้นคุณสามารถลองรีสตาร์ทคราสของคุณได้ มีความสุขในการเขียนโค้ด ....


1

วิธีแก้ปัญหาสำหรับฉันคือการ

  1. สร้างพื้นที่ทำงานใหม่
  2. นำเข้าโครงการไลบรารีในพื้นที่ทำงานนั้น
  3. นำเข้าโครงการที่ต้องการในพื้นที่ทำงานนั้น
  4. การมีทั้งโปรเจ็กต์และไลบรารีโปรเจ็กต์เวอร์ชัน Android OS เป้าหมายเดียวกัน
  5. โครงการห้องสมุดอ้างอิงในโครงการของฉัน

แก้ปัญหาของฉัน


การสร้างพื้นที่ทำงานใหม่ยังช่วยแก้ปัญหาได้ คุณต้องล้างโปรเจ็กต์ด้วย
Omer Cansizoglu

1

ฉันมีปัญหาเดียวกันที่นั่นเมื่อฉันพยายามเปลี่ยนพื้นที่ทำงานดังนั้นวิธีแก้ปัญหาของฉัน:

  1. นำเข้าและคัดลอกข้อมูลโครงการทั้งหมดรวมถึงโครงการไลบรารีลงในพื้นที่ทำงาน
  2. ลบการอ้างอิงโครงการเก่าโดยคลิกขวาที่โปรเจ็กต์ -> คุณสมบัติ -> Android -> ไลบรารีและเลือกไลบรารีที่เสียหาย (ดังนั้นฉันจึงเรียกมันว่า) และเลือกลบ
  3. ทำความสะอาดโครงการก่อน (เพื่อรีเฟรชคุณสมบัติโครงการของคุณ)
  4. ไปที่คุณสมบัติโปรเจ็กต์ไลบรารี -> Android -> ไลบรารีและตรวจสอบไลบรารีคือถ้าไม่คลิกใช้จากนั้นตกลง
  5. หากโครงการไลบรารีได้รับการตรวจสอบแล้วให้ยกเลิกการเลือกก่อนจากนั้นทำความสะอาดโครงการห้องสมุดหลังจากนั้นทำขั้นตอนที่ 4 อีกครั้ง
  6. ไปที่โปรเจ็กต์ที่คุณต้องการให้ไลบรารีอยู่จากนั้นคลิกขวาที่โปรเจ็กต์ -> คุณสมบัติ -> Android -> ไลบรารี่เพิ่มจากนั้นเลือกโปรเจ็กต์ไลบรารี (ควรจะมี) แล้วคลิกใช้จากนั้นตกลง
  7. หากยังไม่ปรากฏให้ทำความสะอาดโครงการอีกครั้งและควรทำ


0

เมื่อคุณดูเส้นทางอ้างอิงก่อนและหลังมันมาจาก "C: / workspace / mylib" และไปที่ "../../mylib" เมื่อคัดลอกไปยังตำแหน่งที่ถูกต้องน่าสนใจทีเดียว


0

FYI,

สิ่งที่ได้ผลสำหรับฉันคือการลบโครงการ 'ไลบรารี' (โครงการจริง) ออกจากพื้นที่ทำงานของฉัน (โดยไม่ต้องลบไฟล์) จากนั้นนำเข้าใหม่โดยใช้วิซาร์ด (นำเข้าโครงการ Android ที่มีอยู่จากซอร์สโค้ด)


ยังทำงานให้ฉัน เพิ่งลบและนำเข้าโครงการอีกครั้ง (เป็น 'โครงการคราสที่มีอยู่')
Neromancer

0

ขอบคุณที่โพสต์คำถาม ฉันมีปัญหาเดียวกันในขณะที่รวม Facebook เข้ากับแอปพลิเคชัน Android ของฉัน ฉันแก้ไขปัญหาโดยย้ายโครงการพัฒนาของฉันไปยังไดรฟ์ Windows เดียวกันกับที่มีโครงการไลบรารีอยู่ อย่างไรก็ตาม Eclipse ไม่สามารถอ่านตำแหน่งของโปรเจ็กต์ไลบรารีได้อย่างถูกต้องจากไฟล์default.propertiesหากอยู่ในไดรฟ์อื่น


0

เช่นเดียวกับโพสต์ของ Sufi Khan ฉันยังแก้ไขปัญหานี้ด้วยการรีบูต กรณีของฉันแตกต่างกันตรงที่เมื่อฉันเข้าถึง Properties-> Android เป็นครั้งแรกและเพิ่มไลบรารีฉันได้รับเครื่องหมายถูกสีเขียวที่สวยงาม เมื่อฉันปิดไดอะล็อก Eclipse ยังคงแสดงข้อผิดพลาดประเภทที่ไม่พบคลาส เมื่อฉันตรวจสอบคุณสมบัติอีกครั้งฉันเห็น X สีแดง แต่โซลูชันของ Mr. Kahn (ลบ lib ที่ไม่ดีรีสตาร์ท Eclipse เพิ่ม lib อีกครั้ง) ทำงานได้ดี

ฉันใช้ชุด ADT เวอร์ชัน 0702 (ขึ้นต้นด้วย "คลัสเตอร์" คำคล้องจองกับ "เป็ด")


0

ฉันทำตามคำตอบที่ยอมรับแล้ว แต่ก็ต้องตรวจสอบให้แน่ใจว่าไฟล์ "project.properties" ของฉันอ่านได้

หากไฟล์เป็นแบบอ่านอย่างเดียว (ตรวจสอบในซอร์สคอนโทรล) eclipse จะไม่แก้ไข การเพิ่มการอ้างอิงไลบรารีจะทำได้สำเร็จ แต่การเปลี่ยนแปลงจะไม่คงอยู่หลังจากกดปุ่มตกลง

หากปิดหน้าต่างการตั้งค่าและเปิดขึ้นมาใหม่อีกครั้งจะลบไลบรารีที่คุณเพิ่งเพิ่มอาจเป็นวิธีแก้ปัญหาของคุณ


0

ในกรณีที่โปรเจ็กต์ไลบรารีของคุณยังไม่ปรากฏให้ลองเพิ่มแฟล็กไลบรารีในคุณสมบัติโปรเจ็กต์ไลบรารีของคุณ

เพิ่มandroid.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.