Java 错误表示找不到类
例外情况Java 错误表示找不到类,java,Java,例外情况 public boolean addUser(User user) throws ClassNotFoundException, SQLException { try { readWriteLock.writeLock().lock(); String sql ="INSERT INTO User VALUES ("+0+",'"+user.getName()+"','"+user.getType()+"',AES_ENCRYPT('"+user
public boolean addUser(User user) throws ClassNotFoundException, SQLException {
try {
readWriteLock.writeLock().lock();
String sql ="INSERT INTO User VALUES ("+0+",'"+user.getName()+"','"+user.getType()+"',AES_ENCRYPT('"+user.getPassword()+"','') ) ";
Connection connection = DBConnection.getConnection();
Statement stm = connection.createStatement();
int res = stm.executeUpdate(sql);
return res > 0;
} finally {
readWriteLock.writeLock().unlock();
}
}
无法更正我的错误。。。
我远程调用此方法。。
我不知道;我不知道如何使用java加密这样的密码,因此该方法在RMI服务器上失败,出现了一个
MySQLSyntaxErrorException
,异常被发回,但您没有在RMI客户端上安装MySQL JDBC驱动程序,因此无法解析异常类,真正的错误消息丢失,当它被ClassNotFoundException
替换时
您有几个选择:
- 将MySQL JDBC驱动程序添加到RMI客户端的类路径。
由于RMI客户端不需要MySQL访问,因此这似乎是错误的解决方案 - 捕获RMI服务器上的异常,并抛出JDK内置异常,例如
SQLSyntaxErrorException
这个类将存在于RMI客户机上,因此您可以看到真正的错误是什么 - 捕获RMI服务器上的异常,将错误消息记录在服务器上的日志文件中,然后引发一个完全通用的异常,例如
RuntimeException(“添加用户时出错。请参阅服务器上的日志文件”)
这将对客户端隐藏RMI服务器内部,这有助于保护服务器免受黑客攻击
java.rmi.unmarshaleException
!您是否使用RMI远程调用此方法?如果是这样的话,你不认为你应该在你的问题中提到这一点吗?是的……远程。对不起,弄错了。
java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException (no security manager: RMI class loader disabled)