问题标签 [javac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
304 浏览

java - Dependency problems with my ANT script

I'm having problems building my project, using an Ant script, from the command prompt using Ant itself. It can't find a certain import for a particular Java file in my project (which has nearly 5,000 source files as it is). The import is included in a .jar package whose location I have set in the Ant file itself. Oddly enough, I can build the project just fine from the Ant file using an IDE like Eclipse. Any ideas what could be wrong? Thanks!

0 投票
3 回答
244 浏览

ant - 在 shell 中使用 Ant 的依赖问题

我在使用 Ant 本身从命令提示符处使用 Ant 脚本构建项目时遇到问题。

它在我的项目中找不到特定 Java 文件的特定导入(它有近 5,000 个源文件)。导入包含在一个 .jar 包中,我在 Ant 文件本身中设置了该包的位置。(作为一个路径元素,以及其他需要的 JAR,它们要么很好,要么在崩溃发生时未尝试使用)。崩溃发生在 javac 上,简单的消息是“import etc.ect.* cannot be found at line etc”

奇怪的是,我可以使用 Eclipse 之类的 IDE 从 Ant 文件构建项目。有什么想法可能是错的吗?谢谢!

0 投票
4 回答
510 浏览

java - 当没有这样的类时,如何使用 ant/javac 编译“import pack.*”?

对于我的公司,我正在制作一个批处理脚本来为我们当前的项目编译并编译最新版本的代码。我正在使用 Ant 构建类文件,但遇到了一个奇怪的错误。其中一个源文件从没有文件(只有文件夹)的目录中导入 .*,事实上,所需的文件夹是在之后立即导入的。

它在 Eclipse 中编译得非常好,但我正在使用 Ant 脚本在 IDE 之外对其进行自动化,Javac 在遇到这一行时会抛出错误。是否有任何自动化程序可以用来在 Ant 中使用 javac 忽略/抑制此错误?

我什至会在导入目录中创建一个虚拟文件,但所有这些都包含在一个 Jar 文件中,我不希望必须解压缩然后用虚拟文件重新压缩。

0 投票
1 回答
3481 浏览

ant - 通过ant将“-J-Duser.language”传递给javac,以确保编译错误以正确的语言报告

我的电脑目前设置为日语以进行测试。如果我的 java 项目出现编译错误,则会以日语报告消息。

例如将 1 个源文件编译到 [...directory...] [...class...].java:172: シンボルを见つけられません。</p>

我希望看到英文的错误。

在不使用 ant 的情况下,解决方法是使用 javac -J-Duser.language=en [..java files...] 这使得 javac 给出英文错误消息(-J 告诉 javac 将其余参数传递给 java )

我的问题是:我如何将它传递给 ant [编辑删除我尝试过但不起作用的选项]

0 投票
6 回答
16804 浏览

java - 在已编译的 java 类中保留参数/参数名称

当我编译这样的东西时:

并将其编译为类文件,似乎参数名称丢失了。也就是说,当一些其他 Java 代码引用MyClass并想要调用或覆盖myMethod时,我的 IDE(当前为 Eclipse)似乎从类文件中获取此方法签名:

我知道 Eclipse(也可能还有其他 IDE)允许我提供指向源代码或 javadoc (正如 Bishboosh 指出的那样)的链接,MyClass并且可以利用这一点。但是我很好奇是否有某种方法可以告诉javac将名称包含到类文件中,以便该类的用户即使只有类文件也可以看到参数名称。

班级解决方案

当我用 编译一个类时java -g:vars,参数的名称包含在类文件中。-g:vars似乎相当于 Eclipse -> 项目属性 -> Java 编译器 -> 将变量属性添加到生成的类文件中。

这个解决方案是由几位作者提出的,但尼克的回答最终让我相信了。

在我的机器上,Eclipse 有时使用此信息,有时没有,这可能是我的错或 Eclipse 中的错误,但不是类文件或编译的问题。无论如何,现在我知道信息肯定存在。

但是没有接口的解决方案

虽然这适用于类(有点)好,但它不适用于接口。

对我来说,合乎逻辑的原因似乎是, -g:vars 只提供局部变量的名称,这也是 javac 的文档所指出的。在方法体中,它的参数与局部变量非常相似,因此它们被 -g:vars 覆盖。接口方法没有主体,所以它们不能有局部变量。

我最初的问题只要求上课,因为我不知道可能会有任何区别。

类文件格式

正如gid所指出的,类文件格式不支持存储参数名称。我在类文件规范中找到了一个部分,它描述了一个数据结构,它应该包含方法的参数名称,但这在编译接口时绝对不会使用。

在编译一个类时,我无法判断是否使用了提到的数据结构,或者 Eclipse 是否从方法体内参数的使用情况推断出参数名称。专家可以澄清这一点,但我认为这并不重要。

0 投票
7 回答
15295 浏览

java - 为一个类生成多个 .class 文件?

出于好奇,为什么有时会在编译后为一个类生成多个 Java .class 文件?例如,我的应用程序有六个类。对于一个类,总共生成了 10 个 .class 文件,从 MyClass#1 到 MyClass#10。

0 投票
1 回答
17648 浏览

java - 使 javac 将警告视为错误

我有一个可以编译我的程序的 Ant 文件。如果编译器报告任何警告,我希望 javac 任务失败。关于如何做到这一点的任何线索?

0 投票
1 回答
517 浏览

ant - 如何对使用 Ant javac 任务编译的文件进行后处理?

我需要在此运行期间编译的文件列表。我想将此列表提供给后续的后处理步骤。

我找到了一个选项来列出(请参阅 listfiles 选项)在此运行期间编译的文件,但它似乎只适用于在控制台上显示列表。

任何的想法?

编辑:我说的是增量编译,所以不能选择构建文件夹的文件集。

编辑:一个想法似乎是自定义记录器,但我仍在寻找更简单的东西

编辑:另一个想法是在 javac 之前将依赖选择器与 FileSet 一起使用,并以某种方式将列表保存在内存中,以便在 javac 执行后使用

0 投票
1 回答
2753 浏览

java - 在 Annotation Processor for java 中发现方法调用的类

我正在为我们的构建系统编写一些工具,以对属于包含某些注释的类的方法强制执行一些严格的调用约定。

我正在使用编译器树 API ...

我想知道的是,在遍历“树”时,如何判断 MethodInvocation 的类/接口的类型。

我将 TreePathScanner 子类化为:

我希望有一种方法可以告诉您尝试调用该方法的类(或接口)的类型。我会以错误的方式解决这个问题吗?感谢您的任何想法...

0 投票
6 回答
77431 浏览

java - 类文件名中的 $1 是什么?

这是该 Java 文件的内容: