Gradle プロジェクトでSigarを使用しようとしています。Sigar ディストリビューションには、デフォルトで 2 種類のファイルが用意されています。
- クラスを含む JAR
- 一部のネイティブ ファイル (.so、dylib、.dll)
私の目的は、これらのファイルを再パッケージ化して、個人の Maven リポジトリからオンデマンドでデプロイおよびダウンロードした依存関係として使用できるようにすることです。
私の最初の試みは、依存関係をファイルとして定義して、アプリケーションが再パッケージ化する前に期待どおりに動作することを確認することでした。以下は、動作する最初のテストに使用した Gradle コードです。
dependencies {
compile files("${rootDir}/lib/sigar/sigar.jar")
runtime fileTree(dir: "${rootDir}/lib/sigar/", exclude: "*.jar")
}
次に、Sigar ネイティブ ファイルを JAR に再パッケージし、もう一方の名前を Maven リポジトリにデプロイしたいので、Maven アーティファクトのルールに一致するように名前を変更しました。以下は私が得るものです:
- sigar-1.6.4.jar (.class ファイルを含む)
- sigar-1.6.4-native.jar (ルートに .dylib、.so、および .dll ファイルを含む)
次のステップは、これらのファイルをカスタム リポジトリにデプロイすることでした。build.gradle
次に、次のように更新しました。
dependencies {
compile 'sigar:sigar:1.6.4'
runtime 'sigar:sigar:1.6.4:native'
}
残念ながら、gradle clean build
新しい依存関係を取得すると、次の例外が発生するため、実行時にネイティブ ライブラリが見つかりません。
Error thrown in postRegister method: rethrowing <java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo;>
したがって、他の依存関係のようにネイティブ ファイルを取得して Java アプリにリンクするためのソリューションを探しています。アドバイス、コメント、提案、ヘルプ、解決策などは大歓迎です ;)