6

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 ファイルを作成してアクセスすると、ローカルで定義されたメソッドとクラスのコード補完が得られます。しかし、セマンティックに jdk ライブラリを認識させる方法がわかりません。たとえばsemantic-ia-complete-symbol、文字列変数を試してみると、 Cannot find types for 'String blah'.

String などの標準オブジェクト型のコード補完が利用できるように、jdk ライブラリをセマンティック db にロードする方法を知っている人はいますか?

4

3 に答える 3

3

CEDET 1.1以降、Semanticはjavapを介したクラス情報の取得をサポートしています。cedet-java-jdk-root変数をJAVA_HOMEに設定semanticdb-javap-classpathし、Javaのシステムjarへのパスのリストを変数に入力する必要がありますrt.jar

セマンティックをJava補完用に設定することについての記事があります(ロシア語ですが、翻訳を入手できます)。詳細については、こちらをご覧ください。

于 2012-05-09T06:18:22.783 に答える
1

$JAVA_HOME にある src.zip を解凍すると、次のように Java モード用のフックを追加できます。

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

Emacs 23.3 と CEDET 1.1 で問題が解決しました。

于 2012-05-08T15:24:10.133 に答える
0

しばらく CEDET を試していなかったので、あなたの問題を理解するためのいくつかの質問をやみくもに聞いてみます。

  1. JDK があなたのパスにあると思いますが、Emacs はそれを見つけることができますか?
  2. JDK は基本的にソース コードのない jar ファイルの集まりなので、セマンティックはそれを解析できますか? 例: を独自Class1.javaに作成し、それを にコンパイルしてからClass1.classを削除Class1.javaした場合、Class2.javaからいくつかのメソッドを記述して参照するとClass1、セマンティックはそれらを見つけることができますか?
  3. JDEEを試しましたか?
于 2010-11-16T08:40:28.060 に答える