java - 将 jar 作为服务启动时出现 oracle db 异常

标签 java linux oracle

在我的程序中,我连接到 oracle DB:

public static Connection getConnection() throws SQLException {
    String dbURL = "jdbc:oracle:oci:<username>/<password>@TNS_NAME";
    return DriverManager.getConnection(dbURL);
}

当我使用“java -jar myprog.jar”在 Linux 上启动 jar 文件时 - 一切正常

当我将其作为服务启动时,使用服务包装器 ( Run a Java Application as a Service on Linux ) 它失败了,但有异常(exception):

java.lang.UnsatisfiedLinkError: java.library.path 中没有 ocijdbc12 在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)

我看到同样的错误,当我使用 sudo 启动它时:“sudo java -jar myprog.jar”

LD_LIBRARY_PATH =/usr/lib/oracle/12.2/client64/lib

操作系统——CentOS; Java 版本 - 1.8;甲骨文版本 - 12.2

最佳答案

问题是,某些 ENV 路径无法从“sudo”或“nohup”获得。

解决方案是在命令中添加 env,如下所示:

nohup env "LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib""ORACLE_HOME=/usr/lib/oracle/12.2/client64""TNS_ADMIN=/usr/lib/oracle/12.2/client64/network/admin"java -jar $PATH_TO_JAR

关于java - 将 jar 作为服务启动时出现 oracle db 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183591/

相关文章:

linux - 为嵌入式 Linux 设备实现更新/升级系统

linux - 如何使用 awk 命令删除文本文件中的单词 "a"而不是字符 'a'?

sql - PostgreSQL 中的 NUMTODSINTERVAL

sql - 如何检索或读取 SQL 中特定列的注释

GWT 的 java.lang.IllegalCastException

java - 如何停止 "Countdown timer "并在Android studio的对话框中显示结果?

linux - 如何从数据行中删除换行符

java - 日期格式不会解析字符串

java - 如何在 Canvas 剪辑中获取内接矩形

java - 如何将选择性数据从一个数据库复制到另一个数据库(ORACLE)