补充一下,我在主线程和两个控制时间的线程里都用了这段代码,也操作同一数据表
不知道是否因为冲突?因为有时候不会出现这错误(一般一开始不会),有时候则出现。
还有这样的:
java.lang.NoClassDefFoundError: sun/reflect/ConstructorAccessorImpl at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377) at sun.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java:76) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:30) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:274) at java.lang.Class.newInstance0(Class.java:306) at java.lang.Class.newInstance(Class.java:259) at com.microsoft.jdbc.base.BaseMessages.loadImplLocalMessages(Unknown Source) at com.microsoft.jdbc.base.BaseMessages.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseWarnings.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.createStatement(Unknown Source) at football.mssqldb.executeQuery(mssqldb.java:60) at football.reminder.run(reminder.java:46) at java.util.TimerThread.mainLoop(Timer.java:432) at java.util.TimerThread.run(Timer.java:382)不知道这样的情况如何避免冲突?
不知道是否因为冲突?因为有时候不会出现这错误(一般一开始不会),有时候则出现。
还有这样的:
java.lang.NoClassDefFoundError: sun/reflect/ConstructorAccessorImpl at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377) at sun.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java:76) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:30) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:274) at java.lang.Class.newInstance0(Class.java:306) at java.lang.Class.newInstance(Class.java:259) at com.microsoft.jdbc.base.BaseMessages.loadImplLocalMessages(Unknown Source) at com.microsoft.jdbc.base.BaseMessages.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseWarnings.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.createStatement(Unknown Source) at football.mssqldb.executeQuery(mssqldb.java:60) at football.reminder.run(reminder.java:46) at java.util.TimerThread.mainLoop(Timer.java:432) at java.util.TimerThread.run(Timer.java:382)不知道这样的情况如何避免冲突?
// 试试定义 rs,stat 都定义为局部变量试试!
// 又不会增加系统的什么消耗,多8个字节而已!
public synchronized ResultSet executeQuery(String sql) {
ResultSet rs = null;
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE); rs = stmt.executeQuery(sql); }
catch (SQLException ex) {
System.err.println("aq.executeQuery:" + ex.getMessage());
System.err.println("aq.executeQuery: " + sql);
}
return rs;
}
现在我用你的代码,问题照旧啊!
而且总是开始可以跑一阵,过一会就出现这错误了。请再帮我考虑一把!