3

Javaクラスがパッケージ化されていて、ファイルディレクトリは次のとおりです。

~/proj/bin/com/example/package/foo.class
~/proj/bin/com/example/package/foo1.class
~/proj/src/com/example/package/foo.java
~/proj/src/com/example/package/foo1.java

クラスfooはクラスfoo1を使用する必要があります。ターミナルでは、これが私がコンパイルする方法です

cd ~/proj/bin
javac -d ./ ../src/com/example/package/foo.java

(私はすでに設定し$CLASSPATH = "~/proj/bin"ました。この方法は、CDを挿入した場合にのみ機能するよう~/proj/binです。)

現在vimを使用しています(Macでspf13-vimプラグインのvimディストリビューションを使用してMacVimを使用しています)。.javaファイルがvimによって保存されると、javacを使用して自動的にコンパイルされます。~/proj/bin/com/example/package/ただし、vimは現在のフォルダをではなくと見なします~/proj/bin。したがって、foo1のクラスを使用する場合は常にfoo.javaにエラーが表示されます。

Javaクラスがパッケージ化されているときに保存時にJavaを自動的にコンパイルするにはどうすればよいですか?

4

5 に答える 5

0

ここにある他の人と同じように、vimハックの代わりに実際のビルドツールを使用することをお勧めします。Mavenの優れた代替手段はsbt(例ではScalaを使用しますが、Javaでも同様に機能します)であり、セットアップが少なくて済みます。実際にMavenリポジトリから依存関係を取得する場合を除いて、POMファイルなどは必要ありません。

すべての設定が完了したら、sbtを開始し~ compileて入力すると、ファイルの変更が検出されたときにプロジェクトが再構築されます。(同様に、~ testファイルが変更されるたびに、を使用してすべてのテストを再構築および実行できます。)

于 2012-12-12T15:10:05.410 に答える
0

たまたま解決策を見つけただけです。Mac OS X のグラフィックインターフェースで MacVim を使っているので、フォルダ~/proj/src/com/example/package/を finder で開き、ファイルfoo.javaをダブルクリックして開きます。vim は、私たちが にいることを認識してい~/proj/src/com/example/package/ます。

「保存しながらコンパイル」を機能させるには:cd ~/proj/bin、vim 内でコマンドを使用して、vim にすべてを実行するように通知します~/proj/bin。今ではうまくいきます!

ところで、spf13-vimrc をインストールしました。

于 2012-12-13T02:09:12.403 に答える
0

私は最近同様の問題を抱えていたので、私がやったことは次のとおりです。

保存時に Vim に Java を自動的にコンパイルさせる代わりに、必要なコンパイルを正確に実行するスクリプトを作成し、vimrc でキーストロークをマッピングして、いつでもそのコンパイル スクリプトを実行できるようにしました。

たとえば、ここにスクリプトの一部があります (私は Windows 7 マシンを使用していますが、適応するのはそれほど難しくありません)。

set projectcp=..\classes;..\classes\lib\jackcess-1.2.7.jar;..\classes\lib\commons-logging.jar;..\classes\lib\commons-lang-2.0.jar;..\classes\lib\mail.jar
set compiledir=..\classes

echo Compiling authentication\LDAP_Authenticator.java ...
javac -d %compiledir% authentication\LDAP_Authenticator.java

echo Compiling data\ProgramData.java ...
javac -d %compiledir% data\ProgramData.java

echo Compiling data\Serializer.java ...
javac -cp %projectcp% -d %compiledir% data\Serializer.java

echo Compiling data\EmailEntry.java ...
javac -cp %projectcp% -d %compiledir% data\EmailEntry.java

そして、私のvimrcには、現在のファイルを自動的に保存し、rrを押すたびにコンパイルスクリプトを実行するこの行があります

nnoremap <leader>rr :w<cr>:!compile-and-run.bat<cr>


あなたのものは次のようになりますが:

nnoremap <leader>rr :w<cr>:!PATH/TO/SCRIPT.sh<cr>


または、おそらくMacではあなたがしなければならないでしょう

nnoremap <leader>rr :w<cr>:!bash PATH/TO/SCRIPT.sh<cr>
于 2012-12-12T14:55:48.853 に答える