【问题标题】:Unable to export CLASSPATH for localhost on Ansible on Linux Redhat无法在 Linux Redhat 上的 Ansible 上为 localhost 导出 CLASSPATH
【发布时间】:2021-09-22 00:27:15
【问题描述】:

在 ansible localhost 上执行 shell 命令时出现以下错误

$  java utils.dbping ORACLE_THIN <dbhost>:<dbport>:<dbname>
Error: Could not find or load main class utils.dbping

为了解决这个错误,我将类路径设置如下:

export CLASSPATH=/web/playbooks/automation/libraries/com.bea.core.datasource6.jar

有了这个java utils.dbping 命令可以正常工作。

我在 localhost 上的 ansible 中尝试相同的命令,如下所示:

 47        - name: Check DB connection with DBPING
 48          shell: "java utils.dbping ORACLE_THIN <dbhost>:<dbport>:<dbname>"
 49          environment:
 50            CLASSPATH: "/web/playbooks/automation/libraries/com.bea.core.datasource6.jar"
 51            PATH: "/web/jdk1.8.0_291/bin"
 52          delegate_to: localhost

但我收到以下错误,表明 CLASSPATH 设置不正确。

02:57:43 failed: [remotehost7 -> localhost] => {"changed": true, "cmd": "java utils.dbping", "delta": "0:00:00.078752", "end": "2021-07-12 17:27:43.616820", "msg": "non-zero return code", "rc": 1, "start": "2021-07-12 17:27:43.538068", "stderr": "java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver\n\tat java.net.URLClassLoader.findClass(URLClassLoader.java:382)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:418)\n\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:351)\n\tat java.lang.Class.forName0(Native Method)\n\tat java.lang.Class.forName(Class.java:264)\n\tat utils.dbping.main(dbping.java:282)", "stderr_lines": ["java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver", "\tat java.net.URLClassLoader.findClass(URLClassLoader.java:382)", "\tat java.lang.ClassLoader.loadClass(ClassLoader.java:418)", "\tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)", "\tat java.lang.ClassLoader.loadClass(ClassLoader.java:351)", "\tat java.lang.Class.forName0(Native Method)", "\tat java.lang.Class.forName(Class.java:264)", "\tat utils.dbping.main(dbping.java:282)"], "stdout": "\nError encountered:", "stdout_lines": ["", "Error encountered:"]}

我什至尝试过CLASSPATH: "/web/playbooks/automation/libraries/com.bea.core.datasource6.jar:.:",但这也无济于事。

我也尝试了java -cp 选项,但仍然没有运气。

我更喜欢在 ansible 中提及 CLASSPATH,而不是在 shell 提示符中与 ansible 命令一起提及。

【问题讨论】:

    标签: java linux ansible environment-variables classpath


    【解决方案1】:

    我想删除这篇文章,因为答案与 ansible 无关。如果有建议,我无论如何都会发布它并删除该帖子。

    错误清楚地表明类文件丢失,即CLASSPATH 中缺少 jar。我添加了它,现在它可以工作了。

     50            CLASSPATH: /web/playbooks/automation/libraries/com.bea.core.datasource6.jar:/web/playbooks/autom    ation/libraries/ojdbc6.jar
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多