【问题标题】:javac error message does not display entire filepathjavac 错误消息不显示整个文件路径
【发布时间】:2011-08-21 04:10:00
【问题描述】:

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

$ 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

【问题讨论】:

  • 我发现如果使用 gcj 或 eclipse 内置编译器,将打印完整路径。但是蚂蚁也会打印一个 JAVA_HOME 找不到错误。我不知道如何解决这个问题。
  • 我 99% 确定这是一个 Ubuntu 错误。我刚刚将笔记本电脑从 FreeBSD 切换到 Ubuntu 11.10。我也可以在我的 FreeBSD 服务器上看到带有 javac 错误的整个路径。仍在寻找解决方案...
  • 有什么方法可以实现吗?

标签: java vim compiler-errors javac openjdk


【解决方案1】:

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

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

以下是一些相关链接:

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

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多