Java利用JavaCPP调用算法示例
目录配置liunx 环境系统配置java 项目
配置liunx 环境系统
配置so 文件存放路径
[root@arch2 ~]# cat /etc/ld.so.conf.d/so.conf
/opt/app/tools/so/
从新调用ldconfig 命令
ldconfig
配置java 项目
配置pom 文件
xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
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
<properties>${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
xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
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
<properties>${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.*
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
定义自己的map 类
@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 目录下,然后更改相应的权限。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~