JNDI 初学 NoInitialContextException

boxiuzhen 2009-07-17 01:06:36
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class JndiLookUp {
public static void main(String[] args) {
Context ctx = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.连接jndi服务器
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:c:/jdbc");
ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("ora20");
con = ds.getConnection();
ps = con.prepareStatement("select * from m_users");
ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}
}
}

我已经加了ojdbc14.jar,fscontext.jar和providerutil.jar
为什么上面的代码执行完后,会出现下面的异常

javax.naming.NoInitialContextException: 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
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.bind(InitialContext.java:400)
at JndiBind.main(JndiBind.java:29)
...全文
143 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinglongjian 2009-07-19
  • 打赏
  • 举报
回复
顶一下,学习了。
humanity 2009-07-17
  • 打赏
  • 举报
回复
^_^ 确实是简单错误。
jww_in_windows 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 boxiuzhen 的帖子:]
Java codeimport java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class JndiLookUp {
public static void main(String[] args) {
Context ctx = null;
Connection con = null;
PreparedStatement ps = n…
[/Quote]
怎么解觉的?
另外你代码context, connection, statement ,resultset 为什么都没关闭
try {
} catch(..) {
} finally {
if (ctx != null) {
ctx.close();
}
if (rs != null) {
rs.close();
}
...ps.close(), con.close()
}
  • 打赏
  • 举报
回复
呵呵




是改了LOG里的路径吧
meander 2009-07-17
  • 打赏
  • 举报
回复
接分,怎么解决的啊
boxiuzhen 2009-07-17
  • 打赏
  • 举报
回复
我自己解决了,谁帮我顶,就给谁分

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧