SBT JNI插件使用手册
sbt-jniSBT Plugin to ease working with JNI项目地址:https://gitcode.com/gh_mirrors/sb/sbt-jni
SBT JNI是一款专为Scala和Java项目中JNI(Java Native Interface)开发设计的SBT插件。本手册基于https://github.com/sbt/sbt-jni.git,将引导您了解并应用这个插件。
1. 项目目录结构及介绍
项目的基本目录结构遵循SBT的标准约定,并且针对JNI特定需求有所扩展:
.
├── build.sbt # SBT构建脚本,用于定义项目依赖和配置插件。
├── project
│ └── build.properties # 指定使用的SBT版本。
├── src
│ ├── main
│ ├── java # Java源代码,可能包含JNI引用的类。
│ └── scala # Scala源代码。
│ └── native # (推荐)JNI本地代码存放处,默认路径。
└── test # 测试相关文件夹,不含JNI本地代码测试。
- build.sbt 文件是配置插件和项目依赖的关键。
- project/build.properties 确保了正确的SBT版本。
- src/main/ 包含主要的源码,其中 native 目录用于存放C/C++源码,这些会被编译为动态链接库供Java调用。
2. 项目的启动文件介绍
在SBT项目中,并没有一个单一的“启动文件”,而是通过SBT命令行接口来管理构建和运行流程。典型的启动交互涉及在终端执行 sbt
命令,然后内部通过如 run
命令来启动应用程序。对于含有JNI的项目,首次还需确保所有JNI相关的本地库已正确编译。
- 主类启动:假设你的主类是
com.example.Main
,在SBT shell里运行run
将尝试启动该程序。 - JNI准备:在运行前,需确保通过插件自动化或手动编译了JNI代码,并且库文件可被Java加载。
3. 项目的配置文件介绍
build.sbt 配置示例
resolvers += Resolver.url("joprice-sbt-plugins", url("http://dl.bintray.com/content/joprice/sbt-plugins"))(Resolver.ivyStylePatterns)
addSbtPlugin("io.github.joprice" % "sbt-jni" % "0.2.0")
enablePlugins(JniPlugin)
jniLibraryName := "libMyApp"
jniGccFlags ++= Seq("-lpthread")
jniNativeCompiler := "g++"
jniNativeClasses := Seq("com.myapp.ClassWithJniCode")
- 启用插件 (
enablePlugins(JniPlugin)
) 开启JNI支持。 - 设置库名 (
jniLibraryName
) 定义要加载的本地库名。 - 编译器配置 (
jniGccFlags
,jniNativeCompiler
) 允许指定编译参数和编译器。 - JNI类映射 (
jniNativeClasses
) 指明包含JNI代码的Java类。
通过上述配置,SBT-JNI插件能够自动处理JNI代码的编译和链接过程,使得集成JNI变得更为简便。请注意,实际应用时应参照最新文档或插件版本调整具体配置。
sbt-jniSBT Plugin to ease working with JNI项目地址:https://gitcode.com/gh_mirrors/sb/sbt-jni