sigar.jar所依赖的.so动态库文件找不到,在tomcat下能实现,打成war包加入到webSphere下自动生成ear包后就不行了,在所以java.library.path目录下都放过文件还是不行,和Jar包一起放到lib包下面还是不行,折腾到要崩溃了……
估计真没多少人遇到过吧 tomcat下能实现,tomcat是windows版的还是linux版的 如果是linux版的,那么放到websphere下面应该是没有什么问题的
打成war包不行,websphere会自动解压war包为文件包吗? weblogic自己不会解压war包,所以在weblogic中的路径问题,在war包中就找不到了 不知道楼主是否遇到这种问题了 ar包没问题,tomcat我在Linux和windows下都试过可以使用,websphere它不是把war包解压,而是变成了ear包,项目servlet可以调用,所以项目是没问题的,只是调用sigar的时候找不到.so文件 tomcat环境时,.so文件放在什么位置呢?是在项目包中还是tomcat中还是放在操作系统里面呢? WebSphere环境可以找找对应的路径看看 tomcat下面是通过调用servlet获取System.getProperty("java.library.path")路径(通过Servlet调用获取的路径和系统配置环境变量有一点不同,用Main方法运动的时候输出的是环境变量PATH),然后将文件放到获取的路径下面就可以了,但是同样的方法在webSphere里面不行。 ------------------------------------------ 第一步: 通过JAVA代码加载库文件,然后在Linux下面配置好LD_LIBRARY_PATH路径就可以了。下面贴上我的代码: Servlet的初始化方法中增加加载库文件代码: ListenerLogger.info("准备启动WebService服务"); // ListenerLogger.info("开始加载so文件"); // System.load("WEB-INF/lib/libsigar-amd64-linux.so"); // System.load("WEB-INF/lib/libsigar-x86-linux.so"); // ListenerLogger.info("完成加载so文件"); System.loadLibrary("/usr/lib/sigar-amd64-linux"); System.loadLibrary("/usr/lib/sigar-amd64-linux"); Endpoint.publish("http://10.145.9.67:9443/listenerService",new ListenerServiceImpl()); //192.168.3.37 ListenerLogger.info("已成功启动WebService服务"); 将文件libsigar-amd64-linux.so和libsigar-x86-linux.so放入到/usr/lib下面,但Java加载代码的时候文件名却值得注意,这里就是我之前失败的原因,文件名必须去掉前面的lib和后面的拓展名.so。 第二步: 配置LD_LIBRARY_PATH,指定路径为你的文件所放置的位置,如我放在/usr/lib/下面,所以我配置的方式是: export LD_LIBRARY_PATH=/usr/lib/ 至此,问题解决
|