javac 错误消息不显示整个文件路径

标签 java vim compiler-errors javac openjdk

当使用 javac(或 ant 任务)时,错误消息不包括整个文件路径,它只包括文件名。例如,

$ javac src/path/to/Filename.java
Filename.java:1: package foo.bar does not exist
import foo.bar.Baz;
              ^

我想要的是,

$ javac src/path/to/Filename.java
src/path/to/Filename.java:1: package foo.bar does not exist
import foo.bar.Baz;
              ^

我的问题是,如果没有给出整个文件路径,而不仅仅是文件名,vim quickfix 将无法工作。仅使用文件名,运行 :make 后将打开一个新的空文件。

我正在使用:

  • Debian 喘息
  • openjdk-6-jdk v6b23~pre7-1
  • javac v1.6.0_23

最佳答案

我认为没有简单的方法可以做到这一点。

不过,我相信有一个复杂的方法。它基本上涉及编写您自己的编译器运行器,它利用 JDK 安装的能力在正在运行的程序中加载和运行 Java 编译器。您需要实现很多东西,但关键是诊断处理器,它按照您需要的方式格式化编译器错误消息。

以下是一些相关链接:

  • Package javax.tools - 为可以从程序中调用的工具提供接口(interface),例如编译器。
  • JavaCompiler - 编译器实现的接口(interface)
  • FileObject - 编译器用来表示源文件的接口(interface);例如在诊断中。注意 toUri() 方法!

关于javac 错误消息不显示整个文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136283/

相关文章:

java - 如果我不使用 Drupal CMS,我怎样才能让 UI 看起来更漂亮?

vim - 通过外部命令仅过滤几个单词(不是整行)

vim - 如何删除vim中的缩进突出显示?

java - 无法编译我的代码

android - 我正在创建一个类似Uber的应用程序,但它突然崩溃,并出现预期的BEGIN_ARRAY错误,但在第1行第1列路径$ STRING

java - 在 linux 服务器上运行 Selenium WebDriver 测试

java - 需要有关面向服务的架构的建议

c# - C# mono 出现奇怪的编译器错误

java - JVM 的 Xss 选项是只覆盖 Java Stacks 还是也包括 Native Stacks?

vim - 我在哪里可以找到 Vim `tags` 选项的完整引用?