您好我使用sshxcute框架来访问Linux服务器。我们的想法是从java项目中执行使用gcc编译的应用程序。这个gcc应用程序具有下一个依赖项:
libdl.so.2 => /lib64/libdl.so.2 (0x000000300ca00000)
libocci.so.11.1 => /e01/demov7/lib/libocci.so.11.1 (0x00002ac507b33000)
libclntsh.so.11.1 => /u01/app/oracle/product/11gR2/lib/libclntsh.so.11.1 (0x00002ac507e2e000)
libnnz11.so => /u01/app/oracle/product/11gR2/lib/libnnz11.so (0x00002ac50a459000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000301ec00000)
libm.so.6 => /lib64/libm.so.6 (0x000000300c600000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000301ac00000)
libc.so.6 => /lib64/libc.so.6 (0x000000300c200000)
/lib64/ld-linux-x86-64.so.2 (0x000000300be00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000300ce00000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x000000300fa00000)
libaio.so.1 => /usr/lib64/libaio.so.1 (0x0000003a92800000)
但是当我尝试执行我的应用程序时,我有下一个错误
加载共享库时出现错误:libocci.so.11.1:无法打开共享对象文件:没有这样的文件或目录
我是否需要执行somme命令或配置一些环境变量以允许访问服务器库?
我在这里附上了我的代码。
SSHExec ssh = null;
ConnBean cb = new ConnBean("127.0.0.1", "user", "password");
ssh = SSHExec.getInstance(cb);
CustomTask ct1 = new ExecCommand("./myapplication");
ssh.connect();
Result res = ssh.exec(ct1);
if (res.isSuccess) {
response = res.sysout;
} else {
response = res.error_msg;
}
ssh.disconnect() ;
答案 0 :(得分:1)
尝试设置LD_LIBRARY_PATH
以包含自定义库目录,例如
LD_LIBRARY_PATH=/e01/demov7/lib:/u01/app/oracle/product/11gR2/lib
答案 1 :(得分:0)
使用.bashrc
文件并将LD_LIBRARY_PATH
和PATH
变量设置为共享库的路径,使用ssh执行完美!解决了共享库的所有依赖关系。感谢larsmans