Apache POI 缺少动态库 libfreetype.so
Apache POI missing dynamic library libfreetype.so
我使用 Apache POI 编写电子表格。有问题的行是我调用 Sheet#autoSizeColumn(int column)
的地方。如果我 运行 它在没有图形环境的 unix shell 上,则会出现以下异常:
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/xawt/libmawt.so: Shared object "libXext.so.7" not found
根据 apache's quick guide 有一个 属性 应该设置为无头环境信号,所以我尝试以下调用:
java -jar -Xmx200m -Djava.awt.headless=true myJar.jar
但是我又得到了同一行的另一个异常:
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/libfontmanager.so: Shared object "libfreetype.so.7" not found
上面的 apache 指南也说 "I should ensure that the fonts I use in your workbook are available to Java"。我真的不使用任何特定的字体,我对字体所做的唯一一件事是
XSSFFont boldFont = (XSSFFont) wb.createFont();
boldFont.setBold(true);
titleRowStyle.setFont(boldFont);
unixshell运行s
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-pkgsrc_2015_01_06_05_56-b00)
OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)
和
NetBSD *** 6.1.5 NetBSD 6.1.5 (jajo) #1: Sun Jun 21 09:13:03 UTC 2015 spaj@***:/usr/src/sys/arch/amd64/compile/jajo amd64
这个问题可以解决吗?
我在系统中发现了一个旧版本的库:
bash-4.3$ find /usr -name "libfreetype.*"
find: /usr/games/hide: Permission denied
/usr/pkg/lib/libfreetype.la
/usr/pkg/lib/libfreetype.a
/usr/pkg/lib/libfreetype.so
/usr/pkg/lib/libfreetype.so.6
/usr/pkg/lib/libfreetype.so.6.11.3
然后我为最新的可用版本创建了一个符号 link,就好像它是版本 7:
ln -s /usr/pkg/lib/libfreetype.so.6.11.3 ~/tmp/lib/libfreetype.so.7
现在开始我的带有环境变量的 jar 文件:
LD_LIBRARY_PATH=~/tmp/lib java -jar -Xmx200m -Djava.awt.headless=true myJar.jar
我遇到了类似的问题。 pointed me in the right direction. Basically, if the app is inside a Tomcat Docker 容器,请确保您使用的不是瘦身版本。
使用 tomcat:9.0.24-jdk11-openjdk-slim
,find /usr -name libfreetype.*
显示 FreeType libfreetype
未包含在 JVM 中。将基本图像更新为 tomcat:9.0.24-jdk11-openjdk
解决了这个问题。
我使用 Apache POI 编写电子表格。有问题的行是我调用 Sheet#autoSizeColumn(int column)
的地方。如果我 运行 它在没有图形环境的 unix shell 上,则会出现以下异常:
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/xawt/libmawt.so: Shared object "libXext.so.7" not found
根据 apache's quick guide 有一个 属性 应该设置为无头环境信号,所以我尝试以下调用:
java -jar -Xmx200m -Djava.awt.headless=true myJar.jar
但是我又得到了同一行的另一个异常:
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /usr/pkg/java/openjdk7/jre/lib/amd64/libfontmanager.so: Shared object "libfreetype.so.7" not found
上面的 apache 指南也说 "I should ensure that the fonts I use in your workbook are available to Java"。我真的不使用任何特定的字体,我对字体所做的唯一一件事是
XSSFFont boldFont = (XSSFFont) wb.createFont();
boldFont.setBold(true);
titleRowStyle.setFont(boldFont);
unixshell运行s
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-pkgsrc_2015_01_06_05_56-b00)
OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)
和
NetBSD *** 6.1.5 NetBSD 6.1.5 (jajo) #1: Sun Jun 21 09:13:03 UTC 2015 spaj@***:/usr/src/sys/arch/amd64/compile/jajo amd64
这个问题可以解决吗?
我在系统中发现了一个旧版本的库:
bash-4.3$ find /usr -name "libfreetype.*"
find: /usr/games/hide: Permission denied
/usr/pkg/lib/libfreetype.la
/usr/pkg/lib/libfreetype.a
/usr/pkg/lib/libfreetype.so
/usr/pkg/lib/libfreetype.so.6
/usr/pkg/lib/libfreetype.so.6.11.3
然后我为最新的可用版本创建了一个符号 link,就好像它是版本 7:
ln -s /usr/pkg/lib/libfreetype.so.6.11.3 ~/tmp/lib/libfreetype.so.7
现在开始我的带有环境变量的 jar 文件:
LD_LIBRARY_PATH=~/tmp/lib java -jar -Xmx200m -Djava.awt.headless=true myJar.jar
我遇到了类似的问题。
使用 tomcat:9.0.24-jdk11-openjdk-slim
,find /usr -name libfreetype.*
显示 FreeType libfreetype
未包含在 JVM 中。将基本图像更新为 tomcat:9.0.24-jdk11-openjdk
解决了这个问题。