จะรวมไลบรารี jdk มาตรฐานใน emacs semantic ได้อย่างไร

ฉันใช้ Emacs 23.2 นี่คือวิธีที่ฉันโหลดความหมาย:

(setq semantic-default-submodes '(global-semantic-idle-scheduler-mode
                  global-semanticdb-minor-mode
                  global-semantic-idle-summary-mode
                  global-semantic-mru-bookmark-mode))
(semantic-mode 1)

ดังนั้น หากฉันสร้างไฟล์ Java แบบธรรมดาและเยี่ยมชมไฟล์นั้น ฉันจะได้รับโค้ดที่สมบูรณ์สำหรับวิธีการและคลาสที่กำหนดในเครื่อง แต่ฉันไม่สามารถทราบวิธีทำให้ semantic รับรู้ถึงไลบรารี jdk ได้ ตัวอย่างเช่น หากฉันลอง semantic-ia-complete-symbol กับตัวแปร String ฉันจะได้ Cannot find types for 'String blah'

ไม่มีใครรู้วิธีโหลดไลบรารี jdk ลงใน semanticdb เพื่อให้โค้ดประเภทวัตถุมาตรฐานเช่น String สมบูรณ์หรือไม่


person Upgradingdave    schedule 13.11.2010    source แหล่งที่มา


คำตอบ (3)


เริ่มต้นด้วย CEDET 1.1 Semantic รองรับการดึงข้อมูลคลาสผ่าน javap คุณต้องตั้งค่าตัวแปร cedet-java-jdk-root เป็น JAVA_HOME และเติมตัวแปร semanticdb-javap-classpath ด้วยรายการเส้นทางไปยัง jars ระบบของ Java เช่น rt.jar เป็นต้น

มีบทความ (เป็นภาษารัสเซีย แต่ คุณสามารถรับ translation) เกี่ยวกับการตั้งค่าความหมายสำหรับการทำให้ Java สมบูรณ์ - โปรดดูรายละเอียดเพิ่มเติมที่นั่น

person Alex Ott    schedule 09.05.2012

หากคุณแตกไฟล์ src.zip ที่พบใน $JAVA_HOME คุณสามารถเพิ่ม hook สำหรับโหมด java ของคุณได้ดังนี้:

(add-hook 'java-mode-hook
  '(lambda ()
     (semantic-add-system-include (getenv "JAVA_HOME") 'java-mode)))

มันแก้ปัญหาให้ฉันด้วย Emacs 23.3 และ CEDET 1.1

person Kjell Andreassen    schedule 08.05.2012

ยังไม่ได้ลองใช้ CEDET มาระยะหนึ่งแล้ว ดังนั้น ฉันจะถามคำถามสองสามข้อแบบสุ่มสี่สุ่มห้าที่อาจให้ข้อมูลเชิงลึกเกี่ยวกับปัญหาของคุณ

  1. ฉันคิดว่า JDK กำลังอยู่ในเส้นทางของคุณและ Emacs สามารถค้นหามันได้หรือไม่
  2. เนื่องจาก JDK นั้นเป็นไฟล์ jar จำนวนมากที่ไม่มีซอร์สโค้ด Semantic สามารถแยกวิเคราะห์ได้หรือไม่ ตัวอย่าง: ถ้าคุณสร้าง Class1.java ของคุณเอง ให้คอมไพล์เป็น Class1.class แล้วลบ Class1.java เมื่อคุณเขียน Class2.java และอ้างอิงวิธีการบางอย่างจาก Class1 Semantic จะสามารถค้นหามันได้หรือไม่
  3. คุณได้ลองใช้ JDEE แล้วหรือยัง?
person darioo    schedule 16.11.2010
comment
ใช่ jdk อยู่บนเส้นทางของฉัน ฉันพบ src.jar ภายใน os x jdk และลองแตกไฟล์และไปที่ String.java ดูเหมือนว่า semantic แยกวิเคราะห์ String.java เป็น semanticdb แต่เมื่อฉันกลับมาภายในโปรเจ็กต์ java ที่กำหนดเอง ดูเหมือนว่าจะไม่พบวิธีการสำหรับ Strings ฉันได้ดู JDEE แล้ว แต่เป้าหมายของฉันที่นี่คือเข้าใจความหมายก่อนที่จะเพิ่มความซับซ้อนมากขึ้น ฉันคิดว่าส่วนใหญ่เป็นความไม่รู้เกี่ยวกับวิธีการทำงานของความหมาย ดังนั้นฉันจะขุดต่อไป แต่ขอบคุณสำหรับคำตอบของคุณ! - person Upgradingdave; 17.11.2010