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

IBM DB2与Oracle SQLJ转换器去向及本地引入方法咨询

关于SQLJ转换器Maven依赖缺失及本地引入的问题

我一年前开发Java项目时,使用Codehaus Mojo SQLJ Plugin将.sqlj文件转换为可访问的Java类,当时pom.xml中的插件配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sqlj-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>sqlj</goal>
                    </goals>
                    <configuration>
                        <sqljDirs>
                            <sqljDir>src/main/sqlj/</sqljDir>
                        </sqljDirs>
                        <generatedSourcesDirectory>../sales-persistance/src/main/java</generatedSourcesDirectory>
                            <generatedResourcesDirectory>../sales-persistance/src/main/resources/ro/ibm/sqlj</generatedResourcesDirectory>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.ibm.db2</groupId>
                    <artifactId>sqlj4</artifactId>
                    <version>4.29.29</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

该配置依赖com.ibm.db2:sqlj4完成SQLJ转换。根据官方文档,SQLJ转换器(比如IBM或Oracle的实现)仅随对应数据库(如Oracle Database 23c)提供,并非独立分发包。但一年前com.ibm.db2:sqlj4还能在MavenCentral找到,现在已无法获取;另外从GitHub旧项目中得知Oracle曾有无需数据库客户端的SQLJ转换器(com.oracle:sqlj),现在也找不到任何Maven仓库提供该依赖。

现咨询两个问题:

  1. 为何独立版本的转换器不再可获取?
  2. 是否可以下载对应的Jar包并通过pom.xml本地引入?目前Oracle和IBM未提供相关下载链接。

问题解答

1. 独立版本转换器消失的原因

  • 厂商分发策略调整:IBM和Oracle后续收紧了SQLJ工具的分发方式,不再将转换器Jar包作为独立依赖上传至公共Maven仓库,而是严格绑定到数据库客户端或官方开发套件中。这是出于版权管控、版本兼容性匹配的考虑——SQLJ转换器需要与对应数据库的JDBC驱动、服务器版本严格对齐,独立分发容易引发兼容性问题。
  • 公共仓库清理:部分旧版依赖可能因为厂商要求、仓库维护政策(比如移除未授权或不再维护的包)被MavenCentral等公共仓库下架。

2. 本地引入Jar包的可行性及方案

可以通过本地Jar包引入,具体步骤如下:

  • 获取Jar包途径:
    • 从已部署过该项目的本地Maven仓库缓存中提取:检查本地.m2/repository/com/ibm/db2/sqlj4/4.29.29/目录,若之前构建过项目,大概率能找到对应的sqlj4-4.29.29.jar文件。
    • 从数据库客户端安装包中提取:下载对应版本的IBM DB2客户端或Oracle数据库开发套件,安装后在安装目录的lib文件夹中找到SQLJ转换器Jar(比如DB2的sqlj4.jar、Oracle的sqlj.jar)。
  • 本地引入的Maven配置:
    方式一:使用system scope直接引用本地Jar
    <dependency>
        <groupId>com.ibm.db2</groupId>
        <artifactId>sqlj4</artifactId>
        <version>4.29.29</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/sqlj4-4.29.29.jar</systemPath>
    </dependency>
    
    方式二:将Jar安装到本地Maven仓库(推荐)
    执行以下Maven命令(替换Jar路径、groupId、artifactId、version):
    mvn install:install-file -Dfile=/path/to/sqlj4-4.29.29.jar -DgroupId=com.ibm.db2 -DartifactId=sqlj4 -Dversion=4.29.29 -Dpackaging=jar
    
    安装完成后,即可像普通Maven依赖一样在pom.xml中引用,无需额外配置scope或systemPath。

内容的提问来源于stack exchange,提问作者Mario Mateaș

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:50:12