You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus开发模式下如何排除指定类自动重载以兼容ActiveJDBC?

在Quarkus中解决JavaLite ActiveJDBC字节码插装失效问题

异常信息

org.javalite.activejdbc.InitException: you are trying to work with models, but no models are found. Maybe you have no models in project, or you did not instrument the models.

问题根源

ActiveJDBC必须依赖编译后的字节码插装才能正常工作,这个插装操作需要在应用启动前的编译后阶段完成。但Quarkus开发模式会自动从源码重新加载并编译所有类,直接覆盖了之前完成的ActiveJDBC字节码插装,导致模型无法被识别,抛出上述异常。

解决方案:配置Quarkus排除特定类的热重载

完全可以通过Quarkus的配置来避免特定类被重新编译和重载,具体操作如下:

  • 方式一:排除整个模型类包
    在项目的application.properties中添加以下配置,替换成你实际的模型类包路径:
quarkus.deployment.exclude-classes=com.yourproject.models.*
  • 方式二:排除单个/多个具体类
    如果只需要排除部分模型类,直接指定类全限定名即可:
quarkus.deployment.exclude-classes=com.yourproject.models.User,com.yourproject.models.Order

配置完成后重启Quarkus开发模式,指定的模型类就不会被重新编译,之前的字节码插装效果会被保留,ActiveJDBC就能正常识别模型了。

备选方案

如果上述配置不生效,可以把ActiveJDBC的模型类单独打包成Jar包,作为第三方依赖引入项目。Quarkus开发模式不会对第三方Jar包中的类进行热重载,同样能避开插装失效的问题。

内容的提问来源于stack exchange,提问作者ipolevoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:04:58