Go Dockerfile致命错误:jni.h:没有这样的文件或目录

Go Dockerfile致命错误:jni.h:没有这样的文件或目录,go,gcc,dockerfile,java-native-interface,Go,Gcc,Dockerfile,Java Native Interface,我正在尝试对使用Go Java JNI库()的Go应用程序进行dockerize,并在构建阶段出现如下错误: /go/src/github.com/timob/jnigi/cinit.go:8:9:致命错误:jni.h:没有这样的文件或目录8 |#include编译已终止 我的Dockerfile: FROM golang:alpine as BUILD ENV GO111MODULE=auto RUN apk update && \ apk upgrade &

我正在尝试对使用Go Java JNI库()的Go应用程序进行dockerize,并在构建阶段出现如下错误:

/go/src/github.com/timob/jnigi/cinit.go:8:9:致命错误:jni.h:没有这样的文件或目录
8 |#include
编译已终止

我的Dockerfile:

FROM golang:alpine as BUILD

ENV GO111MODULE=auto

RUN apk update && \
    apk upgrade && \
    apk add git && \
    apk add unzip && \ 
    apk add openssl-dev && \
    apk add build-base && \
    apk add --no-cache gcc musl-dev && \
    apk add --no-cache openjdk8-jre

COPY . /go/src/project
WORKDIR /go/src/project

RUN go get -d -v

RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o /go/dist/app

FROM alpine:latest AS FINAL

COPY --from=BUILD /go/dist/app /project-runtime/app

RUN apk update && \
    apk add tzdata && \
    apk add apr && \
    apk add ca-certificates && rm -rf /var/cache/apk/* \
    apk add openssl

RUN update-ca-certificates

WORKDIR /project-runtime

ENTRYPOINT ["./app"]

当执行“RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build-a-installsuffix CGO-o/go/dist/app”时,会发生此错误。我应该如何添加jni.h文件?你能帮我一下吗?

我想你没有把这个脚本放到JDK根路径
https://github.com/timob/jnigi/blob/master/compilevars.sh
按照说明操作


The CGO_CFLAGS needs to be set to add the JNI C header files. The compilevars.sh script will do this.

# put this in your build script
source <gopath>/src/tekao.net/jnigi/compilevars.sh <root path of jdk>


需要设置CGO_CFLAGS以添加JNIC头文件。compilevars.sh脚本将执行此操作。
#将其放入构建脚本中
source/src/tekao.net/jnigi/compilevars.sh

您必须安装
jdk
而不是
jre
。据我记忆所及,它应该只是
add--no cache openjdk8