gpt4 book ai didi

java - JNDI InitialContext 无法在简单的 netbeans 项目中工作

转载 作者:行者123 更新时间:2023-11-30 04:44:30 25 4
gpt4 key购买 nike

警告:Java 新手

我有一个简单的 Netbeans 项目 - 我只是想了解如何与来自 php 的数据库进行交互,我想我可以尝试一下在我的计算机上运行的本地项目。

很多示例都说使用 InitialContext() 对象来引用数据库资源。

按照示例进行操作后,我得到以下异常 - 很多 Google 内容都指向某个 .xml 文件 - 我不知道该文件,甚至不知道它在 Netbeans 项目中的位置?我目前没有使用 Web 服务器,所以没有使用 Tomcat 或类似的东西,只是使用本地 Java 程序来执行此操作,我怀疑这可能是问题所在。有人能解释一下吗?

Exception thrown 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.


package learningjava;
import com.mysql.jdbc.jdbc2.optional.*;
import com.mysql.jdbc.Driver;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.*;



public class LearningJava {

public static void main(String[] args) {

MysqlDataSource test_db = new MysqlDataSource();

test_db.setServerName("localhost");
test_db.setDatabaseName("dev");

try {

InitialContext test_db_context = new InitialContext();
test_db_context.bind("jcdb/testdb", test_db);
MysqlDataSource test_db_datasource = (MysqlDataSource)test_db_context.lookup("testdb");

} catch (NamingException e) {

System.out.println("Exception thrown " + e);

}
try {

test_db.getConnection("root","password");

} catch (SQLException e) {

System.out.println("Exception thrown " + e);

}


}

}

最佳答案

您能否尝试在 InitialContext test_db_context = new InitialContext(); 之前添加此内容:

System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");

您应该在类路径中包含 jarnaming-common-4.1.34 和 mysql-connector-java-5.1.6

这个示例对我有用(未优化但有效!)

public static void main(String[] args) throws NamingException {
// Create initial context
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");

InitialContext ic = new InitialContext();
ic.createSubcontext("java:");
ic.createSubcontext("java:comp");
ic.createSubcontext("java:comp/env");
ic.createSubcontext("java:comp/env/jdbc");

MysqlConnectionPoolDataSource mysqlConnectionPoolDataSource = new MysqlConnectionPoolDataSource();
mysqlConnectionPoolDataSource.setUser("root");
mysqlConnectionPoolDataSource.setPassword("root");
mysqlConnectionPoolDataSource.setURL("jdbc:mysql://localhost:3306/test_my_database");

ic.bind("java:comp/env/jdbc/test", mysqlConnectionPoolDataSource);

}

关于java - JNDI InitialContext 无法在简单的 netbeans 项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com