执行存储过程时的运行时异常java.lang.ClassNotFoundException
当我试图从weblogic在Pointbase中执行存储过程时,我遇到以下错误执行存储过程时的运行时异常java.lang.ClassNotFoundException,java,Java,当我试图从weblogic在Pointbase中执行存储过程时,我遇到以下错误 java.sql.SQLException: The external "DbLog::insLog" routine had the following runtime exception "java.lang.ClassNotFoundException: DbLog" 因此,我在commonv.cmd中设置了类路径,如下所示 set POINTBASE_HOME=%WL_HOME%\common\eval\p
java.sql.SQLException: The external "DbLog::insLog" routine had the following runtime exception "java.lang.ClassNotFoundException: DbLog"
因此,我在commonv.cmd中设置了类路径,如下所示
set POINTBASE_HOME=%WL_HOME%\common\eval\pointbase
set POINTBASE_CLIENT_CLASSPATH=%POINTBASE_HOME%\lib\pbclient57.jar
set POINTBASE_CLASSPATH=%POINTBASE_HOME%\lib\pbembedded57.jar;%POINTBASE_CLIENT_CLASSPATH%;C:\bea\user_projects\workspaces\work1\utility\build\classes
set POINTBASE_TOOLS=%POINTBASE_HOME%\lib\pbtools57.jar
我的DbLog类位于路径C:\bea\user\U projects\workspaces\Work1\util\build\classes\net\local\util\common供参考,net\local\util\common是包结构
但是当我尝试执行调用RequestFilter.java的页面时,我得到了以下错误:
Error 500--Internal Server Error
java.lang.NoClassDefFoundError: Could not initialize class net.local.util.common.DbLog
-RequestFilter.java
import net.local.util.common.DbLog;
public final class RequestFilter {
public void log() {
DbLog dblog = new DbLog();
dblog.logPreAuth();
}
}
-DbLog.java
package net.local.util.common;
import java.sql.*;
import org.apache.log4j.Logger;
import com.pointbase.jdbc.*;
public class DbLog {
private static final Logger logger = Logger.getLogger(DbLog.class);
private static boolean DEBUGGING = logger.isDebugEnabled();
private Connection conn = null;
private Statement m_stmt;
private Statement l_stmt;
private CallableStatement m_callStmt = null;
//static ResultSet l_rs = null;
public DbLog() {
logger.info("DbLog constructor called");
init();
}
public void init() {
logger.info("DbLog init called");
}
public void logPreAuth() {
try {
logger.info("Inside logPreAuth method");
String I_URL = "jdbc:pointbase:server://localhost:9093/weblogic_eval";
Class.forName("com.pointbase.jdbc.jdbcUniversalDriver").newInstance();
//Class.forName("com.pointbase.jdbc.jdbcDataSource");
conn = DriverManager.getConnection(I_URL, "PBPUBLIC", "PBPUBLIC");
String SQL_CREATE_PROC = "CREATE PROCEDURE insLog(IN P1 VARCHAR(30))"
+ " LANGUAGE JAVA"
+ " SPECIFIC insLog"
+ " DETERMINISTIC"
+ " NO SQL"
+ " EXTERNAL NAME \"DbLog::insLog\""
+ " PARAMETER STYLE SQL";
m_stmt = conn.createStatement();
m_stmt.executeUpdate(SQL_CREATE_PROC);
m_stmt.close();
m_callStmt = conn.prepareCall("{ call PBPUBLIC.insLog(?) }");
m_callStmt.setString(1, "Success!!");
m_callStmt.execute();
}
catch (Exception e) {
logger.error("Error in logPreAuth method" + e);
}
}
public void insLog(String test)
{
try {
l_stmt = conn.createStatement();
l_stmt.execute("Insert into logs values('" + test + "')");
l_stmt.close();
conn.close();
}
catch (Exception e) {
}
}
}
java.lang.NoClassDefFoundError:无法初始化类net.local.util.common.DbLog
这基本上意味着Class.forNamenet.local.util.common.DbLog失败并出现异常。这反过来又意味着,所讨论的类的任何静态变量或初始值设定项块都抛出了未处理的异常。它们即在类加载期间执行
你在那个班有两个人:
private static final Logger logger = Logger.getLogger(DbLog.class);
private static boolean DEBUGGING = logger.isDebugEnabled();
因此,它们中的任何一个都引发了异常。它的堆栈跟踪在日志的更下方可见。返回阅读日志并检查stacktrace的最底层异常。这是第一个根本原因。它应该足够自我解释。可能在运行时类路径中缺少Log4j左右。真正的错误在stacktrace中的较低位置。张贴整个stacktrace。