【问题标题】:I'm getting java.lang.ExceptionInInitializerError when I connect to JDBC连接到 JDBC 时出现 java.lang.ExceptionInInitializerError
【发布时间】:2013-05-08 04:28:48
【问题描述】:

我在 Eclipse 中使用 Tomcat 7.0 运行服务器。 我有一个 html 文件链接到一个 Servlet 文件,该文件有一个输入值的表单。 当我在 html 文件中输入任何值时,它都会转发到 servlet 文件,并且 servlet 文件有一些代码来连接 JDBC。 代码很简单。

data = request.getPrameter("name");
Connection conn = DriverManager.getConnection(url, username, password);

我已经导入了所有要使用的东西。 另外,在tomcat服务器中,我在catalina.policy中添加了权限

grant{
    permission java.net.SocketPermission "*:1-65535", "connect,resolve";
};

我不确定为什么会收到此错误。 如果需要,我很乐意为您提供更多信息! 请帮帮我:)

【问题讨论】:

  • 我刚刚发现有一个“detailMessage”。它是:访问被拒绝(“java.util.PropertyPermission”“file.encoding”“read”)
  • 没有看到你的完整代码,你有没有看过下面的网站,craftingjava.blogspot.com/2012/06/…
  • @Web2pyuser :将相关信息(如该详细信息)添加到您的实际问题中。不要为此使用 cmets,而是编辑您的问题。

标签: java mysql servlets jdbc


【解决方案1】:

我在使用jdbc连接teradata数据库时遇到了这个问题, 那是因为它需要两个 jar 文件,但我只给了一个 jar 文件: jdbc_driver_loc = '/opt/spark-2.3.1-bin-without-hadoop/jars/terajdbc4-16.20.00.06.jar'

jpype._jexception.ExceptionInInitializerErrorPyRaisable: java.lang.ExceptionInInitializerError

当我添加另一个时,它起作用了:

jdbc_driver_loc = '/opt/spark-2.3.1-bin-without-hadoop/jars/terajdbc4-16.20.00.06.jar,/opt/spark-2.3.1-bin-without-hadoop/jars/tdgssconfig- 16.20.00.06.jar'

这样的整个样本:

[root@myhost transfer]# cat test_conn.py 
import jaydebeapi
from contextlib import closing


jclassname='com.teradata.jdbc.TeraDriver'
jdbc_driver_loc = '/opt/spark-2.3.1/jars/terajdbc4-16.20.00.06.jar,/opt/spark-2.3.1/jars/tdgssconfig-16.20.00.06.jar'
jdbc_driver_name = 'com.teradata.jdbc.TeraDriver'
host='my_teradata.address'

url='jdbc:teradata://' + host + '/TMODE=TERA'
login="teradata_user_name"
psw="teradata_passwd"

sql = "SELECT COUNT(*) FROM  A_TERADATA_TABLE_NAME where month_key='202009'"


conn = jaydebeapi.connect(jclassname=jdbc_driver_name,
                                  url=url, 
                                  driver_args=[login, psw],
                                  jars=jdbc_driver_loc.split(","))

with closing(conn) as conn:
    with closing(conn.cursor()) as cur:
        cur.execute(sql)
        print(cur.fetchall())
   
[root@myhost transfer]# python test_conn.py
[(7734133,)]
[root@myhost transfer]# 

【讨论】:

    【解决方案2】:

    我有 detailMessage 说访问被拒绝(“java.util.PropertyPermission”“file.encoding”“read”)。 所以我添加了权限 java.util.PropertyPermission "file.encoding", "read";并且全部固定 如果这能帮助遇到麻烦的人那就太好了

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多