在服务器上发布项目的时候在日志中发现报如下异常:
java.lang.UnsatisfiedLinkError: no rrdtool in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at com.hwellzen.ccms.ganglia.rrd.RrdTool.<clinit>(RrdTool.java:12)
at com.hwellzen.ccms.ganglia.rrd.RrdFileReader.getLatest(RrdFileReader.java:356)
at com.hwellzen.ccms.ganglia.rrd.RrdInfo.getLatest(RrdInfo.java:160)
at com.hwellzen.ccms.ganglia.rrd.RrdInfo.gatherInfo(RrdInfo.java:330)
at com.hwellzen.ccms.ganglia.rrd.RrdInfo.run(RrdInfo.java:313)
at com.hwellzen.ccms.ganglia.rrd.MultiInfo.read(MultiInfo.java:144)
at com.hwellzen.ccms.ganglia.rrd.MultiInfo.doSomething(MultiInfo.java:191)
at com.hwellzen.ccms.common.threadpooltool.WorkThread.analyseGatherDatas(WorkThread.java:105)
at com.hwellzen.ccms.common.threadpooltool.WorkThread.run(WorkThread.java:86)
比较测试环境和发布环境,发现测试环境是32位的linux服务器,而发布环境是64位的linux服务器,所以产生了JNI调用so的异常,经公司高人指点,在环境变量里面加入
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tomcat/apache-tomcat-6.0.20/webapps/ccms/WEB-INF/classes:.
问题解决
分享到:
相关推荐
在本主题中,我们将深入探讨如何在Windows和Linux环境中利用JNI来生成动态链接库(DLL for Windows,SO for Linux),并使Java能够调用C++编写的函数。 1. **Java调用C++的基本原理** - JNI为Java应用程序提供了一...
在这种情况下,"springboot+jna/jni调用动态so/dll库"是一个重要的主题,它涉及到Spring Boot应用如何利用Java Native Interface (JNI) 和 Java Native Access (JNA) 这两种技术来调用操作系统级别的动态链接库(.so...
### Java JNI调用动态库(Linux、Windows)的实现步骤 #### 一、概述 Java Native Interface (JNI) 是一种标准的 Java 接口,它允许 Java 代码和其他语言(如 C 或 C++)编写的代码进行交互。通过 JNI,Java 应用...
本示例将详细介绍如何通过JNI调用第三方动态库,并生成两个.so文件。 首先,我们需要了解.so文件在Android中的角色。在Linux系统(包括Android)中,.so文件是共享库的扩展名,这些库通常包含了C/C++编译的原生代码...
例如,`java jni调用so中的函数api.txt`中可能包含了具体的JNI函数调用示例。 其次,JNA是一种更高级的接口,它提供了更简洁的方式来调用本地库,无需编写C/C++代码。JNA通过映射Java方法到本地函数,减少了编程...
通过以上步骤,我们完成了在Linux环境下使用C语言通过JNI调用Java类的全过程。这种技术广泛应用于高性能计算、系统集成、设备驱动等多个场景,是Java和C/C++混合编程的关键技术。在实际应用中,可能还需要处理更复杂...
总结来说,这个“简单JNI实例调用第三方.so库”的例子展示了如何在Java应用程序中通过JNI调用C/C++代码。这个过程包括:定义Java的native方法、使用javah生成C/C++头文件、编写C/C++实现、编译生成.so库以及在Java...
在Linux环境下,Java和C语言之间的交互经常通过JNI(Java Native Interface)技术实现。这个"linux-java调用c语言编译的so动态库-jni例子-简单计算器"是一个典型的示例,展示了如何利用JNI来创建一个Java应用程序,...
4. **编译C++代码**:将C++源代码编译为动态链接库(在Windows上是.dll,在Linux上是.so,在macOS上是.dylib)。确保正确链接了JNI库。 5. **加载库**:在Java中,`System.loadLibrary()`会加载前面创建的动态链接...
标题“java调用c++生成so库”指的是在Linux环境下,通过JNI技术,Java程序可以调用预先用C++编译生成的动态链接库(.so文件)。.so文件是Linux下的动态共享对象,相当于Windows下的.DLL文件,它包含了可由多个程序...
#include"TestNative.h"; JNIEXPORT jint JNICALL Java_TestNative_add (JNIEnv *ev, jobject obj, jint x, jint y) { return x+y; }
### Linux平台调用JNI动态库知识点详解 #### 一、JNI简介 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI在不同的平台上有着广泛的应用,尤其是在Linux这样...
4. **编译本地方法**:将C/C++代码编译成动态链接库(如Windows下的.dll,Linux下的.so,MacOS下的.dylib)。 5. **加载库**:在Java代码的静态块中,通过`System.loadLibrary()`加载编译好的动态链接库。 6. **...
在Android编程中,有时我们需要利用C或C++的性能优势,这时就需要在Linux环境下创建`.so`(共享对象)动态库。`.so`文件是Android系统中的本地代码库,允许Java应用程序通过Java Native Interface (JNI)调用C或C++的...
- 本地方法库通常是一个动态链接库(如Windows上的DLL或Unix/Linux上的SO文件)。 2. **创建JNI接口**: - 在Java源码中声明本地方法,使用`native`关键字。例如: ```java public class NativeDemo { native ...
本资料"Java通过JNI调用C语言函数库的方法.zip"提供了一个名为"JavaJNIStudy-master"的项目,下面将详细介绍这一过程的关键知识点。 1. **JNI简介** JNI是Java平台的标准接口,它使得Java应用程序可以与本地代码...
4. **编译动态链接库**:将C/C++代码编译成适合目标操作系统的动态链接库(如Windows下的.dll,Linux下的.so,Mac下的.dylib)。这通常需要指定JNI库路径和正确的链接选项。 5. **加载动态链接库**:在Java代码中,...
JNI允许Java代码直接调用本地(如C++)编写的动态链接库(DLL,Windows系统)或共享对象库(SO,Linux系统),从而扩展Java应用程序的功能,尤其是在处理性能敏感或操作系统依赖的任务时。 1. **JNI基础** JNI是...
《JNI调用C++的应用实例》 JNI,全称Java Native Interface,是Java平台中用于实现Java代码与其他语言(如C/C++)交互的关键技术。自Java 1.1起,JNI已成为Java平台的标准组成部分,它允许Java应用程序利用本地代码...