Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: ja

时间:2021-08-13 21:20:16
请问各位大侠,Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
com.datang.exception.ApplicationException是什么原因呢?烦请高手指导指导。一下是出错的代码:
package com.datang.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.datang.dao.EmployeeDAO;
import com.datang.exception.ApplicationException;
import com.datang.po.Employee;
import com.datang.po.EmployeeList;
import com.datang.util.DBUtil;

public class EmployeeMySQLDAOImpl implements EmployeeDAO{

public static final String GET_EMPLOYEE_BY_ID="select id,name,sex,hire_date,position,birthday,degree,major,experience 

from t_employee";


public EmployeeList getEmployeeById(String id)throws ApplicationException{
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
EmployeeList emp=new EmployeeList();

try{
conn=DBUtil.getConnection();        <-----从这一句就直接跳转的finally里边了。。
pstmt=conn.prepareStatement(GET_EMPLOYEE_BY_ID);
pstmt.setString(1, id);
rs=pstmt.executeQuery();
while(rs.next()){

emp.setId(rs.getString(1));
emp.setName(rs.getString(2));
emp.setSex(rs.getString(3).equals("0")?"男":"女");
emp.setHire_date(rs.getDate(4));
emp.setPosition(rs.getString(5));
emp.setBirthday(rs.getDate(6));
emp.setDegree(rs.getString(7));
emp.setMajor(rs.getString(8));
emp.setExperience(rs.getString(9));
}
return emp;
}catch(SQLException e){
e.printStackTrace();
return null;
}finally{
DBUtil.close(rs, pstmt, conn);
}
}

public static void main(String[] args){
try {
EmployeeList name=new EmployeeMySQLDAOImpl().getEmployeeById("1");
System.out.println(name);
} catch (ApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

抛出的异常是:2008-10-24 09:42:45:INFO main com.datang.util.DBUtil - 数据库发生异常Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
com.datang.exception.ApplicationException
at com.datang.util.DBUtil.getConnection(DBUtil.java:32)
at com.datang.dao.impl.EmployeeMySQLDAOImpl.getEmployeeById(EmployeeMySQLDAOImpl.java:166)
at com.datang.dao.impl.EmployeeMySQLDAOImpl.main(EmployeeMySQLDAOImpl.java:193)

经检查DBUtil.java  ApplicationException.java 都没错,谢谢了!!

15 个解决方案

#1


帮顶一下!

#2


java.naming.factory.initial

那一句跳了,你就再跟进去呗,应该是Class.forName那里出错了,检查一下。

#3


pstmt.setString(1, id); 
这一条语句应该拿掉吧。

#4


连接池 see

#5


连接池,怎么连接不上呢,之前好好的

#6


楼主 我也有这样的问题  你解决了吗?  告诉我怎么解决···谢谢·

#7


http://tech.ddvip.com/2009-06/1244864563123563.html

必须用jsp进行连接测试,

#8


你应该把你的DBUtil类给别人看
拿这个有什么用呢,错不在这

#9


在类里面和jsp里面不同!他们不再同一个线程里!想用的话在jsp页面吧类引进去,在jsp页面调用!

#10


引用 9 楼 soswm 的回复:
在类里面和jsp里面不同!他们不再同一个线程里!想用的话在jsp页面吧类引进去,在jsp页面调用!


大虾。。。能不能解释一下关于在类里面和jsp里面不在同一个线程的详细实现。我是菜鸟,我觉得终究都是要执行这个java类,有什么区别呢?为啥就不能直接测试一下?拜托详细点。。。thanks!!!

#11


如果你用的是tomcat服务器那么在lookup的时候要加入java:comp/env/
 DataSource datasource=(DataSource)context.lookup("java:comp/env/jdbc/ConnectionTest"); 

#12


 DataSource datasource=(DataSource)context.lookup("java:comp/env/jdbc/ConnectionTest");  
  加啦 还是一样

#13


帮顶,我也是遇到同样的问题!!!

#14


晕哦,找到答案了,你是 用了数据库连接池吧,做测试的话你只能在web上面做测试,因为连接池是部署到tomcat服务器上,不能用application做测试的

#15


引用 14 楼  的回复:
晕哦,找到答案了,你是 用了数据库连接池吧,做测试的话你只能在web上面做测试,因为连接池是部署到tomcat服务器上,不能用application做测试的


同解。没有服务器的参与,肯定run不起来的。

#1


帮顶一下!

#2


java.naming.factory.initial

那一句跳了,你就再跟进去呗,应该是Class.forName那里出错了,检查一下。

#3


pstmt.setString(1, id); 
这一条语句应该拿掉吧。

#4


连接池 see

#5


连接池,怎么连接不上呢,之前好好的

#6


楼主 我也有这样的问题  你解决了吗?  告诉我怎么解决···谢谢·

#7


http://tech.ddvip.com/2009-06/1244864563123563.html

必须用jsp进行连接测试,

#8


你应该把你的DBUtil类给别人看
拿这个有什么用呢,错不在这

#9


在类里面和jsp里面不同!他们不再同一个线程里!想用的话在jsp页面吧类引进去,在jsp页面调用!

#10


引用 9 楼 soswm 的回复:
在类里面和jsp里面不同!他们不再同一个线程里!想用的话在jsp页面吧类引进去,在jsp页面调用!


大虾。。。能不能解释一下关于在类里面和jsp里面不在同一个线程的详细实现。我是菜鸟,我觉得终究都是要执行这个java类,有什么区别呢?为啥就不能直接测试一下?拜托详细点。。。thanks!!!

#11


如果你用的是tomcat服务器那么在lookup的时候要加入java:comp/env/
 DataSource datasource=(DataSource)context.lookup("java:comp/env/jdbc/ConnectionTest"); 

#12


 DataSource datasource=(DataSource)context.lookup("java:comp/env/jdbc/ConnectionTest");  
  加啦 还是一样

#13


帮顶,我也是遇到同样的问题!!!

#14


晕哦,找到答案了,你是 用了数据库连接池吧,做测试的话你只能在web上面做测试,因为连接池是部署到tomcat服务器上,不能用application做测试的

#15


引用 14 楼  的回复:
晕哦,找到答案了,你是 用了数据库连接池吧,做测试的话你只能在web上面做测试,因为连接池是部署到tomcat服务器上,不能用application做测试的


同解。没有服务器的参与,肯定run不起来的。