在我的程序中,我连接到 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/