问题标签 [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 投票
6 回答
9262 浏览

javac - 如何在 Borland JBuilder 2005/2006 中增加 javac 进程的最大堆大小

在大多数现代 IDE 中,您可以设置一个参数以确保 javac 获得足够的堆内存来进行编译。由于不值得在这里讨论的原因,我们暂时与 JBuilder 2005/2006 相关联,而且源代码的数量似乎已经超过了 javac 可以处理的数量。

请保留特定于 JBuilder 2005/2006 javac 的答案(我们现在无法迁移,并且 Borland Make 编译器不正确支持 Java 1.6)

我意识到应该如何以及应该将哪些参数传递给 javac,问题是 IDE 似乎不允许在任何地方设置这些参数。很多配置都隐藏在 Jbuilder Install\bin*.config 文件中,我觉得答案可能在某个地方,但还没有找到。

0 投票
2 回答
2415 浏览

linux - linux编译多个java文件

这是我的目录结构。

/user/a /user/b /user/b

在文件夹 a,b,c 中有一个文件 person.java (它是同一个文件,只是一行修改。

现在,在我的外壳上,我在我的 /user/ 目录上,我尝试做

外壳返回以下错误,

person.java:14:重复类:人

有什么可以解决的吗?

0 投票
2 回答
6115 浏览

java - javac.exe AST 编程访问示例

是否可以通过编程方式访问 javac.exe 中的抽象语法树(AST)?你能举个例子吗?

0 投票
4 回答
14675 浏览

java - 仅用 ant 编译源代码树的一部分

假设我在我的 src/ 树中有我的资源(也可能在我的 test/ 树中)。假设我只想编译那棵树的一部分。我可能想要这样做的原因是多种多样的。举个例子,我可能想要创建尽可能小的 jar(不包括某些类),或者我可能想要我正在编译的最快的编译时间。不过,我绝对想编译所有依赖项!

这可以通过命令行轻松实现:

现在,你怎么能用蚂蚁做到这一点?javac ant任务编译所有内容

将递归扫描源目录和目标目录以查找要编译的 Java 源文件。

可以使用excludesandincludes参数,但它们为此目的是有问题的。事实上,似乎必须明确设置所有includes(不是自动依赖查找),甚至最坏排除优先于包含

当同时使用包含和排除时,仅使用与至少一个包含模式匹配且不匹配任何排除模式的文件/目录。

因此,您不能使用

因为它不会编译任何东西:-(

有没有办法javac用 ant 实现那个简单的命令行?


编辑:谢谢你的回答,萨迪,我接受它,因为它确实以我在这个问题中想知道的方式工作。但是我有几条评论(太长了,不能在您的答案的评论字段中):

1)我确实阅读了文档(请参阅上面的链接),但不清楚是否只有includes您实际上也排除了其他所有内容

2)当你只是includes蚂蚁记录类似

即使依赖项使其编译(远)不仅仅是一个源文件。

0 投票
3 回答
18675 浏览

java - Javac 调试打开和关闭之间是否存在性能差异?

如果我打开使用 Javac 生成调试信息,那么类文件会大 20-25%。这对运行 Java 程序有任何性能影响吗?如果是,在哪些条件和多少条件下。我希望对加载类有一点影响,因为文件更大,但这应该是最小的。

0 投票
3 回答
4468 浏览

java - 为什么我不能在同名的匿名类之外调用方法

最后的代码产生编译错误:

问题是为什么?为什么javac认为我在调用run(),却没有找到run(int bar)?它正确地调用了 foo(int bar)。为什么我必须使用 NotApplicable.this.run(42);?它是一个错误吗?

0 投票
3 回答
341 浏览

java - javac 是否应该在同名的匿名类之外找到方法?

这个问题是后续问题: 为什么我不能在同名的匿名类之外调用方法

这个先前的问题回答了为什么,但现在我想知道 javac是否应该找到 run(int bar)?(请参阅上一个问题以了解 run(42) 失败的原因)

如果不应该,是因为规范吗?它会产生模棱两可的代码吗?我的意思是,我认为这是一个错误。虽然前面的问题解释了为什么这段代码无法编译,但我觉得如果 javac 在树中搜索更高的位置,如果它未能在当前级别找到匹配项,它应该编译。IE。如果 this.run() 不匹配,它应该自动检查 NotApplicable.this 是否有运行方法。

另请注意,正确找到了 foo(int bar)。如果你给出了为什么不应该找到 run(int bar) 的任何理由,它还必须解释为什么找到 foo(int bar)。

0 投票
3 回答
6609 浏览

java - 如何将 JDK6 ToolProvider 和 JavaCompiler 与上下文类加载器一起使用?

我的用例是使用 JDK 6 中提供的 ToolProvider 和 JavaCompiler 类从 java 程序编译生成的源文件。源文件包含对上下文类加载器中类的引用(它在 J2EE 容器中运行),但不在系统类加载器中。我的理解是,默认情况下 ToolProvider 将使用系统类加载器创建 JavaCompiler 实例。

有没有办法指定一个类加载器供 JavaCompiler 使用?

我尝试了这种方法,根据 IBM DeveloperWorks 上的某些内容进行了修改:

FileManagerImpl 定义为:

堆栈跟踪表明它在注释处理期间仅被调用一次。我验证了要编译的源文件中引用的类不在系统类路径上,但可以从上下文类加载器中获得。

0 投票
2 回答
7866 浏览

bash - 试图在 bash shell 中捕获 javac 输出

我正在尝试将 java 编译器输出重定向到文件。我以为应该是:

或者其他的东西。相反,我在终端上看到了所有输出,而 log.txt 中什么也没有!

另外,如果我也想记录错误,我会这样做吗

?

0 投票
1 回答
5389 浏览

java - 有没有办法提高 Java 编译器的多核/多处理器性能?

我的同事注意到,当 javac 编译时,它只使用一个内核。有没有像 Java 的 gcc 中的 -j 命令一样的东西,可以让我们跨内核或处理器分配编译器工作负载?如果不是,您认为这将成为可能吗,或者由于 Java 的设计而存在某种基本限制?

环境是带有 Sun J2SE 1.6.0.11 jdk 的 Linux。