我的方法:
将.so
文件与平台的具体分类到库中,这样的:sqlite3-3.7.9-linux-x86_64.so
。 添加.so
依赖于所有需要的平台:
<dependency>
<groupId>de.ch-werner</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.9</version>
<type>so</type>
<classifier>linux-x86_64</classifier>
</dependency>
使用此Maven的组装插件配置把所有的本地库到lib/native
目录的你DIST:
<dependencySet>
<outputDirectory>lib/native</outputDirectory>
<outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
<unpack>false</unpack>
<useProjectArtifact>false</useProjectArtifact>
<useStrictFiltering>false</useStrictFiltering>
<includes>
<include>*:*:dll:*</include>
<include>*:*:so:*</include>
<include>*:*:jnilib:*</include>
</includes>
</dependencySet>
使用this class加载应用程序启动时库(计划将分类器命名更改为GNU triplets):
CtzJniUtils.loadJniLibsFromStandardPath(Launcher.class, "sqlite3")
如何部署它然后nd确保本地库放在正确的LIBRARY_PATH中? – jbx 2012-04-09 09:48:02
它不会,它会加载到'java.io.tmpdir'的子目录中,并加载完整的路径名。 – 2012-04-09 09:50:15