学习使用JBDC时遇到进程退出值非零(non-zero exit value 1)错误求助
解决JDBC连接报错“finished with non-zero exit value 1”的问题
嘿,作为新手遇到这个问题很正常,咱们一步步拆解排查,帮你搞定它!
首先,non-zero exit value 1本质是程序运行时抛出了未捕获的异常,结合你的代码和配置,主要有几个问题需要修正:
1. 致命的URL拼写错误
你写的数据库连接URL里的jbdc是拼写错误,正确的协议名是jdbc!这个错误会直接导致DriverManager无法识别数据库类型,连连接的第一步都走不通:
// 错误写法 String urlConnection = "jbdc:mysql://localhost/digital_innovation_one"; // 修正后(加上时区参数适配MySQL 8.0) String urlConnection = "jdbc:mysql://localhost/digital_innovation_one?serverTimezone=UTC";
额外加上?serverTimezone=UTC是MySQL 8.0版本的要求,避免时区不匹配引发的隐性报错。
2. 空指针异常隐患
如果连接失败,conn会保持null状态,这时进入finally块调用conn.close()会抛出NullPointerException,这也是导致程序非零退出的关键原因。推荐用try-with-resources语法自动管理资源,不用手动写close,还能彻底避免空指针:
// 用try-with-resources包裹Connection,代码结束后自动关闭连接 try (Connection conn = DriverManager.getConnection(urlConnection , "MyLogin" , "MyPass")) { System.out.println("Sucesso"); } catch (SQLException e){ // 不要只打印"Falhou",输出异常详情才能快速定位问题! System.err.println("Falhou: " + e.getMessage()); e.printStackTrace(); }
3. 额外的细节优化
- 类名修正:你的类名
ConnectionJBDC里的JBDC也是拼写错误,改成ConnectionJDBC更规范,避免后续自己混淆。 - 环境验证:确认你的MySQL服务正在运行,
digital_innovation_one数据库已经创建,MyLogin用户拥有该数据库的访问权限。
修改后的完整代码
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionJDBC { public static void main(String[] args) { // 修正URL拼写并添加时区参数 String urlConnection = "jdbc:mysql://localhost/digital_innovation_one?serverTimezone=UTC"; // try-with-resources自动管理连接资源,无需手动close try (Connection conn = DriverManager.getConnection(urlConnection , "MyLogin" , "MyPass")) { System.out.println("Sucesso"); } catch (SQLException e){ // 打印详细异常信息,方便排查具体问题 System.err.println("Falhou: " + e.getMessage()); e.printStackTrace(); } } }
你的gradle配置是没问题的,mysql-connector-java:8.0.26版本适配正确,不需要修改。
内容的提问来源于stack exchange,提问作者Cesar Bhering
相关产品推荐
相关产品推荐

