Bagaimana cara memasukkan perpustakaan jdk standar dalam semantik emacs?

Saya menggunakan Emacs 23.2. Inilah cara saya memuat semantik:

(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)

Jadi, jika saya membuat file java sederhana dan mengunjunginya, saya mendapatkan penyelesaian kode untuk metode dan kelas yang ditentukan secara lokal. Tapi saya tidak tahu bagaimana membuat perpustakaan jdk sadar semantik. Misalnya, jika saya mencoba semantic-ia-complete-symbol pada variabel String, saya mendapatkan Cannot find types for 'String blah'.

Adakah yang tahu cara memuat perpustakaan jdk ke dalam semantikdb sehingga penyelesaian kode tipe objek standar seperti String tersedia?


person Upgradingdave    schedule 13.11.2010    source sumber


Jawaban (3)


Dimulai dengan CEDET 1.1, Semantic memiliki dukungan untuk mengambil informasi kelas melalui javap. Anda perlu mengatur variabel cedet-java-jdk-root ke JAVA_HOME, dan mengisi variabel semanticdb-javap-classpath dengan daftar jalur ke toples sistem Java, seperti rt.jar, dll.

Ada sebuah artikel (dalam bahasa Rusia, tapi Anda bisa mendapatkan translation) tentang pengaturan Semantic untuk penyelesaian Java - silakan lihat di sana untuk detail lebih lanjut.

person Alex Ott    schedule 09.05.2012

Jika Anda unzip src.zip yang ditemukan di $JAVA_HOME Anda dapat menambahkan hook untuk mode Java Anda seperti ini:

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

Ini memecahkan masalah saya dengan Emacs 23.3 dan CEDET 1.1.

person Kjell Andreassen    schedule 08.05.2012

Sudah lama tidak mencoba CEDET, jadi saya akan menanyakan beberapa pertanyaan secara membabi buta yang mungkin dapat memberikan gambaran tentang masalah Anda.

  1. Saya berasumsi JDK ada di jalur Anda, dan Emacs dapat menemukannya?
  2. Karena JDK pada dasarnya adalah sekumpulan file jar tanpa kode sumber, dapatkah Semantic menguraikannya? Contoh: jika Anda membuat Class1.java sendiri, kompilasi menjadi Class1.class lalu hapus Class1.java, saat Anda menulis Class2.java dan mereferensikan beberapa metode dari Class1, dapatkah Semantic menemukannya?
  3. Sudahkah Anda mencoba JDEE?
person darioo    schedule 16.11.2010
comment
Ya, jdk ada di jalur saya. Saya menemukan src.jar di dalam os x jdk dan bahkan mencoba mengekstraksi dan mengunjungi String.java. Tampaknya semantik mem-parsing String.java ke dalam semantikdb, tetapi ketika saya kembali ke dalam proyek java khusus saya, sepertinya tidak dapat menemukan metode untuk Strings. Saya telah melihat JDEE, tetapi tujuan saya di sini adalah memahami semantik terlebih dahulu sebelum menambahkan lebih banyak kompleksitas. Saya pikir sebagian besar karena ketidaktahuan saya tentang cara kerja semantik, jadi saya akan terus menggali, tapi terima kasih atas tanggapan Anda! - person Upgradingdave; 17.11.2010