与 Eclipse 编译器相比,为什么 javac 1.5 运行速度这么慢?

2023-12-26

我有一个 Java Maven 项目,其中包含大约 800 个源文件(其中一些由 javacc/JTB 生成),使用 javac 编译需要花费 25 分钟。

当我将 pom.xml 更改为使用 Eclipse 编译器时,编译大约需要 30 秒。

关于为什么 javac (1.5) 运行这么慢有什么建议吗? (我不想永久切换到 Eclipse 编译器,因为 Maven 的插件似乎有很多问题。)

我有一个可以轻松重现问题的测试用例。以下代码在默认包中生成多个源文件。如果您尝试使用 javac 编译 ImplementingClass.java,它似乎会暂停很长时间。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class CodeGenerator
{
    private final static String PATH = System.getProperty("java.io.tmpdir");
    private final static int NUM_TYPES = 1000;

    public static void main(String[] args) throws FileNotFoundException
    {
        PrintStream interfacePs = new PrintStream(PATH + File.separator + "Interface.java");
        PrintStream abstractClassPs = new PrintStream(PATH + File.separator + "AbstractClass.java");
        PrintStream implementingClassPs = new PrintStream(PATH + File.separator + "ImplementingClass.java");
        interfacePs.println("public interface Interface<T> {");
        abstractClassPs.println("public abstract class AbstractClass<T> implements Interface<T> {");
        implementingClassPs.println("public class ImplementingClass extends AbstractClass<Object> {");

        for (int i=0; i<NUM_TYPES; i++)
        {
            String nodeName = "Node" + i;
            PrintStream nodePs = new PrintStream(PATH + File.separator + nodeName + ".java");
            nodePs.printf("public class %s { }\n", nodeName);
            nodePs.close();
            interfacePs.printf("void visit(%s node, T obj);%n", nodeName);
            abstractClassPs.printf("public void visit(%s node, T obj) { System.out.println(obj.toString()); }%n", nodeName);
        }
        interfacePs.println("}");
        abstractClassPs.println("}");
        implementingClassPs.println("}");
        interfacePs.close();
        abstractClassPs.close();
        implementingClassPs.close();
    }
}

Sun 通过电子邮件向我确认这是一个新错误(6827648 https://bugs.java.com/bugdatabase/view_bug?bug_id=6827648在他们的错误数据库中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 Eclipse 编译器相比,为什么 javac 1.5 运行速度这么慢? 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在 Bash 中监控 tomcat,直到它完成部署 war 或应用程序

    怎么可能Tomcat在 bash 脚本中进行监控以检测它是否完成了战争或应用程序的部署 应用场景 Tomcat 开始于systemd Tomcat 开始于catalina sh 使用 Tomcat 管理器 Tomcat从Eclipse启动
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • java.lang.OutOfMemoryError:Scala 上超出了 GC 开销限制

    我是 Scala 开发人员 我在Routes它包含的文件1008行如果我添加另一行 则会抛出下面的错误 Uncaught error from thread sbt web scheduler 1 shutting down JVM sin

随机推荐

  • MySQL 和 Python Select 语句问题

    感谢您抽时间阅读 这将是一个很长的帖子来解释这个问题 我无法在所有常用来源中找到答案 问题 我在使用 python 的 select 语句从 mysql 数据库中的表中调用数据时遇到问题 系统及版本 Linux ubuntu 2 6 38
  • 背包问题(经典)

    所以我必须在课堂上解决背包问题 到目前为止 我已经提出了以下建议 我的比较器是确定两个主题中哪一个是更好的选择的函数 通过查看相应的 值 工作 元组 我决定迭代工作量小于 maxWork 的可能科目 为了找到在任何给定回合中哪个科目是最佳选
  • raw_input() 在输入后才会显示提示

    它实际上比标题暗示的更进一步 如果我在 main 中的任何地方有 raw input 那么在用户输入输入之前不会发生任何事情 包括在调用 raw input 之前应该发生的任何函数调用或输出 这是我的代码的一个非常简单的示例以及它运行时发生
  • Highcharts:每个系列是否可以有单独的绘图选项?

    我想在图表上有两个散点系列 一个线宽为 1 另一个没有线宽 据我了解 plotOptions适用于指定类型的所有图表 因此所有散点图要么有线宽 要么没有 是否可以将plotOptions应用于特定系列 除了下面列出的成员之外 该特定类型图的
  • 如何在 vue.js webpack 项目上正确设置 favicon.ico?

    我创建了一个vue webpack项目使用vue cli vue init webpack myproject 然后在下面运行该项目dev mode npm run dev 我收到这个错误 无法加载资源 服务器响应状态为 404 未找到 h
  • 如何在 SAML 2.0 Web 浏览器 SSO 的 AuthnRequest 中识别主体

    我是 SAML 新手 在完全理解完整的 SAML2 SSO 流程方面遇到了一些困难 具体来说 当服务提供商使用元素响应资源请求时 元素中的哪一部分数据标识要由身份提供商验证的主体 即用户 例如 在以下 AuthnRequest 中似乎没有任
  • scipy.stats.binned_statistic_dd() 中的输出

    我正在尝试使用scipy stats binned statistic dd http docs scipy org doc scipy reference generated scipy stats binned statistic dd
  • 安装tensorflow 2有问题

    我想练习tensorflow 2 但我尝试在anaconda环境中安装它失败了 我的问题是 如何安装tensorflow 2 如果可以在 anaconda 环境中完成 在我看来会更方便 我不需要理解下面的错误信息 只要我能使用tensorf
  • 使用代码中的“fb_ref”参数跟踪来自 Facebook 的点赞按钮推荐

    我们想使用属性fb ref 点赞按钮中的 ref 参数 以便跟踪推荐点击和转化 您是否有关于如何在我们的页面上进行此操作的教程或示例 当您使用ref点赞按钮上的参数 点击返回由该点赞按钮生成的网站 在引荐来源网址中包含两个额外参数 fb r
  • 在哪里可以阅读有关编程的内容? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ASP.NET MVC 将列表传递给 RouteData QueryString

    将值列表作为查询字符串传递的推荐方法是 www site com search value 1 value 2 value 3 value 4 ASP NET 很好地处理了这个问题 string value QueryString Get
  • 文件传输详细信息持续绑定,直到使用 WPF 在窗口中传输文件

    我已经创建了将文件从客户端传输到服务器的项目 我已经完成了文件传输并获取了文件传输的详细信息 例如文件名 something avi 和传输的文件百分比 10 如下所示 每当我传输文件时 我都会使用下面的事件处理程序来了解该文件转移的详细信
  • 如何进入封闭班? [复制]

    这个问题在这里已经有答案了 I know Class getDeclaredClasses 可以获取它声明的所有类 但不包括匿名类 我想知道有没有办法通过封闭类获取所有封闭类 例如 我想获取定义在中的所有封闭类Root用于测试目的 clas
  • 如何在 WPF 中创建可拖动到主窗口之外的面板?

    尝试在 Visual Studio 2008 中复制对接控件 我的应用程序为 FAA 重播 RADAR 环境 并且我希望双显示器用户能够将控制面板拖动到另一个显示器 以使主画布保持清晰 此功能类似于将 VS 中的不同面板拖到主窗口之外的方式
  • MIPS 伪指令、替换

    经过研究后 我发现这只是获得相同结果的方法的替代 如果我错了 请纠正我 example move s0 t1 可以替换为 add s0 zero t1 问题 怎样才能更换lw la sw bne 是的move指令可以并且被替换为add操作说
  • 当我使用 Control-C 中断 C# 控制台应用程序时会发生什么?

    当我使用 Control C 中断 C 控制台应用程序时会发生什么 进程被杀死了吗 内存被释放了吗 是finally块被执行 数据库连接会发生什么情况 如果应用程序是为调试或发布而构建的 或者在 Visual Studio 内部 外部运行
  • Angular 动态组件 AOT 问题

    由于一些业务逻辑 我必须读取动态组件 EntryComponents 的元数据 要读取元数据 以下是我的方法 使用读取模块的所有组件组件工厂解析器 使用组件名称和特定方法过滤掉类 创建组件并读取数据 销毁该组件 const factorie
  • 如何对多个项目使用 ETag / If-Match

    在 RESTful 接口中处理乐观锁定的推荐方法似乎是返回一个ETag来自 GET 并提供If Match在 PUT 上 即 GET items 1 gt gives client an ETag for a single item PUT
  • 从块返回 UIImage

    我有以下代码 UIImage getPublisherLogo check the cache if the logo already exists NSString imageUrl NSString stringWithFormat i
  • 与 Eclipse 编译器相比,为什么 javac 1.5 运行速度这么慢?

    我有一个 Java Maven 项目 其中包含大约 800 个源文件 其中一些由 javacc JTB 生成 使用 javac 编译需要花费 25 分钟 当我将 pom xml 更改为使用 Eclipse 编译器时 编译大约需要 30 秒