当java服务器在我们的服务器上运行时,而不是在我的开发人员机器上运行时,Mariadb存储过程调用上的NullPointerException

当java服务器在我们的服务器上运行时,而不是在我的开发人员机器上运行时,Mariadb存储过程调用上的NullPointerException,java,jvm,centos,mariadb,Java,Jvm,Centos,Mariadb,我正在开发一个使用Mariadb的服务器,如果客户机成功响应了特定的查询,一个特定的存储过程将更新枚举字段 当我在我的dev机器上本地运行服务器并将其指向服务器上的数据库时,没有问题,但是当我编译一个jar并使用数据库在服务器上运行它时,在查询执行后返回的int上会得到一个NullPointerException。错误发生在此行: int rowsUpdated = callableStatement.executeUpdate(); 下面是完整的方法调用: public void u

我正在开发一个使用Mariadb的服务器,如果客户机成功响应了特定的查询,一个特定的存储过程将更新枚举字段

当我在我的dev机器上本地运行服务器并将其指向服务器上的数据库时,没有问题,但是当我编译一个jar并使用数据库在服务器上运行它时,在查询执行后返回的int上会得到一个NullPointerException。错误发生在此行:

int rowsUpdated = callableStatement.executeUpdate();
下面是完整的方法调用:

    public void updateWlanSettingsStatus(String deviceId, String status) {
        try {

            connection = database.getConnection();
            CallableStatement callableStatement = connection
                    .prepareCall("{call updateWlanSettingsStatus(?,?)}");
            callableStatement.setString(1, deviceId);
            callableStatement.setString(2, status);

            int rowsUpdated = callableStatement.executeUpdate();

            connection.close();
            log.debug("DataDAO: Rows Updated: " + rowsUpdated);
            log.debug("DataDAO: wlan settings update complete for " + deviceId);

        } catch (SQLException e) {
            log.error("DataDAO An SQLException occured!", e);
            closeDbConnection(connection);

        } catch (Exception e) {
            log.error("DataDAO An Exception Occurred:", e);
            closeDbConnection(connection);

        }
我在Windows 8上开发,服务器运行CentOs。 我的机器正在运行Java1.8并编译为1.7。服务器正在运行1.7

这就是我得到的错误:

java.lang.NullPointerException 
        at org.mariadb.jdbc.MySQLCallableStatement.getUpdateCount(MySQLCallableStatement.java:1471) 
        at org.mariadb.jdbc.MySQLCallableStatement.executeUpdate(MySQLCallableStatement.java:1131) 
        at com.zaxxer.hikari.proxy.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:61) 
        at com.zaxxer.hikari.proxy.CallableStatementJavassistProxy.executeUpdate(CallableStatementJavassistProxy.java) 
        at com.watersprint.deviceapi.data.DataDAO.updateWlanSettingsStatus(DataDAO.java:586) 
        at com.watersprint.deviceapi.server.WorkerRunnable.processResultOfMessage(WorkerRunnable.java:133) 
        at com.watersprint.deviceapi.server.WorkerRunnable.processJsonObject(WorkerRunnable.java:110) 
        at com.watersprint.deviceapi.server.WorkerRunnable.run(WorkerRunnable.java:63) 
        at java.lang.Thread.run(Thread.java:745)
服务器Java规范:

java版本1.7.0_75

OpenJDK运行时环境 rhel-2.5.4.2.el7_0-x86_64 u75-b13

OpenJDK 64位服务器虚拟机构建 24.75-b4,混合模式

我的开发机器Java规范:

java版本1.8.0_25

JavaTM SE运行时环境构建1.8.0_25-b18

Java HotSpotTM 64位服务器VM构建25.25-b02,混合模式

正如我所说,我正在将项目编译为Java1.7

代码按预期执行,数据库按预期更新,即使出现错误,执行后所有值都是正确的

我正在考虑卸载Java1.8并恢复到1.7。
我错过了什么?恢复我的机器版本的Java是最好的做法吗?我还缺什么吗

你能证明第61行吗?那是java.sql.PreparedStatement的一部分,我没有这方面的来源。对不起,我弄错了。Wich是第586I行,我刚刚在一台云服务器上运行了它,它使用相同的操作系统和相同的Java版本,运行时没有任何问题。所以我不再认为这是JVM的问题;