使用JOOQ 3.18.7试用版连接MS SQL Express遇证书路径错误求助
问题:JOOQ代码生成时出现SSL证书路径错误
我已注册JOOQ 3.18.7 Express免费试用版,通过Maven安装了相关依赖。配置好pom.xml后执行compile目标时,报错:unable to find valid certification path to requested target。此前用JOOQ连接PostgreSQL无问题,当前连接MS SQL Express服务器,且JDBC连接字符串已通过IntelliJ测试验证。请问这是JOOQ的问题还是MS SQL Server的问题?
相关pom.xml配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.chiralcloud</groupId> <artifactId>chiralcloud</artifactId> <version>0.0.10</version> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.jooq.trial</groupId> <artifactId>jooq</artifactId> <version>3.18.7</version> </dependency> <!-- These may not be required, unless you use the GenerationTool manually for code generation --> <dependency> <groupId>org.jooq.trial</groupId> <artifactId>jooq-meta</artifactId> <version>3.18.7</version> </dependency> <dependency> <groupId>org.jooq.trial</groupId> <artifactId>jooq-codegen</artifactId> <version>3.18.7</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>11.2.2.jre17</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <includes> <include>com/chiralcloud/database/**</include> </includes> </configuration> </plugin> <plugin> <groupId>org.jooq</groupId> <artifactId>jooq-codegen-maven</artifactId> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>11.2.2.jre17</version> </dependency> </dependencies> <configuration> <jdbc> <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver> <url>jdbc:sqlserver://192.168.0.83\test:60062;databaseName=Annex</url> <user>sa</user> <password>######</password> </jdbc> <generator> <database> <name>org.jooq.meta.</name> <includes>.*</includes> <inputSchema>public</inputSchema> </database> <target> <packageName>com.chiralcloud.database</packageName> <directory>target/generated-sources/jooq</directory> </target> </generator> </configuration> </plugin> </plugins> </build> </project>
问题分析与解决
这个错误和JOOQ无关,本质是JDBC连接MS SQL Server时的SSL证书信任问题。IntelliJ测试连接正常是因为IDE本身信任了服务器的SSL证书,但Maven执行时使用的JVM未导入该证书。此外你的pom.xml还有两处配置错误:
- JOOQ数据库配置的
<name>标签不完整,应为org.jooq.meta.sqlserver.SQLServerDatabase,而非org.jooq.meta. - MS SQL Server不存在
publicschema,需替换为实际schema(比如默认的dbo)
修复步骤
1. 修正JOOQ代码生成配置
修改pom.xml中jooq-codegen-maven插件的<database>节点:
<database> <name>org.jooq.meta.sqlserver.SQLServerDatabase</name> <includes>.*</includes> <inputSchema>dbo</inputSchema> <!-- 替换为你的实际schema名称 --> </database>
2. 解决SSL证书信任问题
有两种方案可选:
- 方案一:临时禁用SSL验证(仅开发环境)
在JDBC连接URL中添加encrypt=false参数:<url>jdbc:sqlserver://192.168.0.83\test:60062;databaseName=Annex;encrypt=false</url> - 方案二:导入证书到JVM信任库(生产环境推荐)
- 获取MS SQL Server的SSL证书
- 使用
keytool命令导入到JVM的cacerts信任库:
默认信任库密码为keytool -import -alias mssqlserver -file /path/to/your/certificate.cer -keystore $JAVA_HOME/lib/security/cacertschangeit
3. 验证修复
执行Maven命令重新编译:
mvn clean compile
内容的提问来源于stack exchange,提问作者Chiral Systems
相关产品推荐
相关产品推荐

