首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法为Linux Redhat上的Ansible上的localhost导出CLASSPATH

无法为Linux Redhat上的Ansible上的localhost导出CLASSPATH
EN

Stack Overflow用户
提问于 2021-07-13 05:37:19
回答 1查看 66关注 0票数 0

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

代码语言:javascript
运行
复制
$  java utils.dbping ORACLE_THIN <dbhost>:<dbport>:<dbname>
Error: Could not find or load main class utils.dbping

为了解决这个错误,我像下面这样设置类路径:

代码语言:javascript
运行
复制
export CLASSPATH=/web/playbooks/automation/libraries/com.bea.core.datasource6.jar

这样,java utils.dbping命令就可以很好地工作。

我在本地主机上尝试使用ansible中的相同命令,如下所示:

代码语言:javascript
运行
复制
 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没有正确设置。

代码语言:javascript
运行
复制
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命令。

EN

回答 1

Stack Overflow用户

发布于 2021-07-13 22:06:38

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

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

代码语言:javascript
运行
复制
 50            CLASSPATH: /web/playbooks/automation/libraries/com.bea.core.datasource6.jar:/web/playbooks/autom    ation/libraries/ojdbc6.jar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68354123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档