1

わかりました、jib docker イメージの作成中にリンクの問題が発生しました。必要なファイルをコンテナにコピーします

jib {
    allowInsecureRegistries = true
    extraDirectories{
        paths{
            path{
                from = file('jnetpcap/jib')
                into = '/native'
            }
        }   
    }
.
.
.

そして他のタスクでは、それらのライブラリを指します

task cmdScript(type: CreateStartScripts) {
    mainClassName = "cic.cs.unb.ca.ifm.Cmd"
    applicationName = "cfm"
    outputDir = new File(project.buildDir, 'scripts')
    classpath = jar.outputs.files + project.configurations.runtime
    defaultJvmOpts = ["-Djava.library.path=/native"]
}

確認したところ、これらのライブラリはコンテナーに正しく追加されています。ライブラリのコピーではなく、リンカのセットアップの問題です。

cmdScript は distTar でプロジェクトをビルドすると正しいリンカを設定しますが、jibDockerBuild でビルドする場合のリンカの設定方法がわかりません。ここで私の問題に対する答えが見つからなかったので、SO で助けを求めることにしました。

アップデート

ここでいくつかの手がかりを見つけました。追加してジブタスクを更新しました

jib {
    allowInsecureRegistries = true
    extraDirectories{
        paths{
            path{
                from = file('jnetpcap/jib')
                into = '/native'
            }
        }   
    }

container.jvmFlags = ["-Djava.library.path=/native/*"]

しかし、同じエラーが発生し続けます。

エラーメッセージは

exception in thread main java.lang.unsatisfiedlinkerror 'long com.slytechs.library.NativeLibrary.dlopen(java.lang.String)'
4

1 に答える 1