Go Dockerfile致命错误:jni.h:没有这样的文件或目录
我正在尝试对使用Go Java JNI库()的Go应用程序进行dockerize,并在构建阶段出现如下错误: /go/src/github.com/timob/jnigi/cinit.go:8:9:致命错误: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 &
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
。