java - 如何配置 Syntastic 在何处生成 .class 文件?

标签 java class vim auto-generate syntastic

我正在为我的博士项目编写一些代码,并使用 VIM 作为我的代码编辑器。 当我使用 Java 进行编码时,我选择 Syntastic 来检查和编译我的代码。到目前为止一切顺利。

当我尝试创建包含所有 .class 的目录时,出现了问题。我想这样做,因为我打算使用这个目录使用一个简单的 make 文件创建一个 .jar。所以,这是我的场景:

源代码:

C:\Users\LABIMD05\workspace\backhoe-nomvn2\src(全部.java)

类文件:

C:\Users\LABIMD05\workspace\backhoe-nomvn2\bin\classes(我想放置所有 .classes 的位置)

这样,假设我正在编写 br.ufrn.Project。当我使用 :SyntasticCheck 时,我希望在以下位置生成 br.ufrn.Project .class 文件:

C:\Users\LABIMD05\workspace\backhoe-nomvn2\bin\classes\br\ufrn\Project.class

而不是在:

C:\Users\LABIMD05\workspace\backhoe-nomvn2\src\br\ufrn\Project.class(与.java相同)

这是我在 _vimrc 文件中使用的选项

let g:syntastic_java_javac_classpath = 'C:\Users\LABIMD05\workspace\szz_lib\*;C:\Users\LABIMD05\workspace\backhoe-nomvn2\bin\classes'
let g:syntastic_java_javac_delete_output = 0
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_mode_map = { 'mode': 'passive',
            \ 'passive_filetypes': ['java']}

问题: 每次编译 br.ufrn.Project 文件时,.class 文件都会转到 .java 文件的同一目录

我认为这是因为 Syntastic 会在当前工作目录中创建 .class 文件。然后我用了:

cd C:\Users\LABIMD05\workspace\backhoe-nomvn2\bin\classes

查看 Syntastic 是否会在所需位置创建 .class。但我没有成功。

你们知道我可以在哪里配置它吗?我只想将 .class 文件与 .java 文件分开,然后使用 make 文件创建仅包含二进制文件的 jar。很简单的事情。

感谢您提供的任何帮助。

最佳答案

您无法配置 Syntastic 将 java 文件编译到其他位置。但是,您可以创建一个使用 SyntasticCheck 的命令并将 java 文件编译到不同的目录。

使用javac -d dir File.java命令,您可以告诉java编译器在哪里生成.class文件。

使用它你可以创建一个 vim 命令,我将其称为 Javac 但你可以选择如何调用它。它将调用 Syntastic 检查并生成 .class 文件到另一个文件。

function! Javac()
    execute "w"
    execute "SyntasticCheck"
    execute "!javac -d C:\Users\LABIMD05\workspace\backhoe-nomvn2\bin\classes %"
endfunction

command! Javac :call Javac()

如果不需要 SyntasticCheck 部分,您可以将其删除。

只需将其放入您的 .vimrc 中,然后您就可以使用 :Javac 来执行它。 或者,如果您希望它仅在编辑 java 文件类型时处于 Activity 状态,也可以将其放入 ~/.vim/ftplugin/java.vim 中。

关于java - 如何配置 Syntastic 在何处生成 .class 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808080/

相关文章:

java - 具有自定义类的 XmlPullParser 不显示所有 RSS 提要

ruby - 使用 vim 生成基于整数的随机数表?

c++ - 没有输入的默认构造函数

c# - 我的 C# XNA 游戏的玩家类

Vim map 命令保存文件并运行测试

vim - vim 和 emacs 中的代码导航

java - Ubuntu 内核杀死 java 进程,即使它没有内存不足

Java Main 方法魔数(Magic Number)

java - SaxonParserTest 缺少 SaxonXQDataSource?

java - 时间:下周五怎么过?