配置so 文件存放路径 [root@arch2 ~]# cat /etc/ld.so.conf.d/so.conf /opt/app/tools/so/ 从新调用ldconfig 命令 ldconfig配置java 项目
- 配置pom 文件
4.0.0 org.jacdong javacpptest 0.1-SNAPSHOT ${basedir}/cppbuild UTF-8 true false true ${project.artifactId} linux-x86 linux-x86_64 linux-x86_64 true org.bytedeco javacpp 1.5.3 junit junit 4.12 test maven-compiler-plugin maven-jar-plugin 3.1.0 org.apache.maven.plugins maven-dependency-plugin 2.10 org.bytedeco javacpp 1.5.3 ${javacpp.platform} platform.root ${javacpp.platform.root} platform.compiler ${javacpp.platform.compiler} platform.extension ${javacpp.platform.extension} ${project.build.outputDirectory} ${basedir}/src/main/resources/linux-x86_64 javacpp.parser generate-sources build false ${project.build.sourceDirectory} com.jacdong.preset.* maven-surefire-plugin 2.9 once target/classes/linux-x86_64 org.codehaus.mojo exec-maven-plugin 1.1 build-jnilib process-classes exec java -jar ./libs/javacpp-1.5.jar -Xcompiler -g -Xcompiler -ggdb -nodelete -d target/classes/linux-x86_64 -Xcompiler -I${env.JAVA_HOME}/include -Xcompiler -I${env.JAVA_HOME}/include/linux -Xcompiler -fvisibility=default -Xcompiler -rdynamic -Xcompiler -std=c++11 -classpath target/classes com.jacdong.wrapper.JavaCPPTest echoPath install exec echo "sudo cp ${basedir}/target/classes/linux-x86_64/*.so /usr/lib/;sudo ldconfig" maven-clean-plugin 3.1.0 src/main/java/com/jacdong/rtcm/wrapper/ JavaCPPTestTmp.java false org.eclipse.m2e lifecycle-mapping 1.0.0 org.bytedeco javacpp [1.5.3,) build org.codehaus.mojo exec-maven-plugin [1.1,) exec
配置文件当中需要主要的几点
false ${project.build.sourceDirectory} com.jacdong.preset.*
定义自己的map 类java -jar ./libs/javacpp-1.5.jar -Xcompiler -g -Xcompiler -ggdb -nodelete -d target/classes/linux-x86_64 -Xcompiler -I${env.JAVA_HOME}/include -Xcompiler -I${env.JAVA_HOME}/include/linux -Xcompiler -fvisibility=default -Xcompiler -rdynamic -Xcompiler -std=c++11 -classpath target/classes com.jacdong.wrapper.SingleStationIono
@Properties(target = "com.jacdong.wrapper.JavaCPPTestTmp",
value = {@Platform(include = {"javacpp.h"},
compiler = "cpp11")})
public class JavacppMapper implements InfoMapper{
public void map(InfoMap infoMap) {
infoMap.put(new Info().cppNames("_stdcall").skip())
.put();
}
}
注意点
在利用javacpp 的时候,经常会出现找不到so 文件的情况,这个时候,大家可以把so 文件copy 到/usr/lib 目录下,然后更改相应的权限。



