Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在alpine/Jprofile 10中运行jpenable时出现不满意的链接错误_Java_Alpine_Jprofiler - Fatal编程技术网

Java 在alpine/Jprofile 10中运行jpenable时出现不满意的链接错误

Java 在alpine/Jprofile 10中运行jpenable时出现不满意的链接错误,java,alpine,jprofiler,Java,Alpine,Jprofiler,在运行JDK 8的alpine:3.3容器中运行jpenable以允许对Jprofiler10进行评测时,我得到了一个未满足的LinkError异常。有什么想法吗 ERROR: The agent could not be loaded: Picked up _JAVA_OPTIONS: -Xmx1024m Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/jprofiler10/bin/ linux-x64/liba

在运行JDK 8的alpine:3.3容器中运行jpenable以允许对Jprofiler10进行评测时,我得到了一个未满足的LinkError异常。有什么想法吗

ERROR: The agent could not be loaded: Picked up _JAVA_OPTIONS: -Xmx1024m
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/jprofiler10/bin/
linux-x64/libattach.so: Error relocating /opt/jprofiler10/bin/linux-x64/libattac
h.so: __strcpy_chk: symbol not found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.jprofiler.attach.b.b.b.load(ejt:6)
at com.jprofiler.attach.b.b.i.loadLibraryPath(ejt:49)
at com.jprofiler.attach.a.b(ejt:92)
at com.jprofiler.attach.a.a(ejt:74)
at com.jprofiler.attach.a.main(ejt:116)

所以,我会回答我自己的问题

首先,我注意到ldd显示,在alpine:3.5 openjdk8 jre包中,大多数java本机库都被破坏(而不是解析依赖库)。我在此处找到了配置加载库路径的解决方案:

使用以下内容创建/etc/ld-musl-x86_64.path修复了我在ldd中发现的大多数库问题

/lib
/usr/lib
/usr/local/lib
/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64
/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli
/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server
/opt/jprofiler10.1.1/bin/linux-x64/
但是,jprofiler10 tar文件中提供的/opt/jprofiller10.1.1/bin/linux-x64/libattach.so仍然被破坏,因此我删除了它,并使用了/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64目录中包含的libattach.so

下面的Dockerfile显示了我是如何构建容器的,并修复了这些问题

FROM alpine:3.5
RUN apk --no-cache add \
    openjdk8-jre-base \
    libstdc++
COPY ld-musl-x86_64.path /etc/ld-musl-x86_64.path
ADD jprofiler_linux_10_1_1.tar /opt/
RUN rm /opt/jprofiler10.1.1/bin/linux-x64/libattach.so 
在这之后,我能够把集装箱运到牧场主那里

最后的步骤是将shell执行到容器中,并运行jpenable以启用Jprofiler工具来创建到jvm的连接

e、 g./opt/jprofiler10.1.1/bin/jpenable


然后,我可以在端口8849上连接并配置应用程序。

您可以尝试安装软件包
gcc g++linux headers udev
?谢谢,@IngoKegel-我尝试将这些软件包添加到容器中-但结果是一样的。我有一张支持票,汉内斯正在和我一起工作。