使用CMakeLists编译MySQL JDBC Java代码遇问题求助
嘿,我来帮你解决用CMake编译这段Java JDBC代码的问题!首先咱们先把代码本身的小问题修正,再配置正确的CMakeLists.txt,一步步来:
第一步:修正Java代码
你的原代码存在几个无法编译/运行的问题:没有类包裹、缺少main入口方法、URL里的HTML转义字符错误,还没处理连接关闭的资源泄漏。这里是修正后的完整代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnector { public static void main(String[] args) { Connection conn = null; try { // 把原代码里的&改成&,Java字符串不需要HTML转义 conn = DriverManager.getConnection( "jdbc:mysql://localhost/test?user=root&password=wielj12903" ); System.out.println("数据库连接成功!"); } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } finally { // 最后记得关闭数据库连接,避免资源浪费 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
第二步:配置CMakeLists.txt
CMake编译Java需要用到FindJava和UseJava模块,还要正确引入MySQL JDBC驱动依赖。以下是完整的CMake配置文件:
cmake_minimum_required(VERSION 3.11) project(JavaJDBCDemo) # 查找系统中的JDK环境 find_package(Java REQUIRED) include(UseJava) # 设置Java编译的版本(根据你的JDK版本调整,比如11、17) set(JAVA_COMPILE_FLAGS "-source" "1.8" "-target" "1.8") # 指定你的Java源文件 set(JAVA_SOURCES DBConnector.java) # 配置MySQL JDBC驱动路径,先下载对应版本的mysql-connector-java.jar,放到和CMakeLists同目录 set(MYSQL_JDBC_JAR "${CMAKE_CURRENT_SOURCE_DIR}/mysql-connector-java.jar") # 编译生成Jar包,同时引入JDBC驱动作为依赖 add_jar(DBConnectorJar ${JAVA_SOURCES} INCLUDE_JARS ${MYSQL_JDBC_JAR}) # 可选:添加一个run目标,方便直接用CMake运行程序 add_custom_target(run COMMAND ${Java_JAVA_EXECUTABLE} -cp "${CMAKE_CURRENT_BINARY_DIR}/DBConnectorJar.jar:${MYSQL_JDBC_JAR}" DBConnector DEPENDS DBConnectorJar WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
关键注意事项
- 确保你的系统已经安装了JDK(不是JRE),CMake能通过
find_package(Java)找到它 - 去MySQL官网下载对应你MySQL版本的JDBC驱动包(mysql-connector-java.jar),放到CMakeLists.txt同一目录下
- 如果是Windows系统,运行命令里的类路径分隔符要改成
;,而不是: - 确认你的MySQL服务正在运行,并且
root用户的密码、数据库名test都和代码里的配置一致
内容的提问来源于stack exchange,提问作者Tim Alderkot
相关产品推荐
相关产品推荐

