在我的程序中,我连接到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) 它失败,例外:
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
OS - CentOS; java版 - 1.8; oracle版本--12.2
答案 0 :(得分:0)
问题是,某些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