首页 文章

Apache POI缺少动态库libfreetype.so

提问于
浏览
1

我使用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指南还说“我应该确保我在工作簿中使用的字体可用于Java” . 我真的不使用任何特定的字体,我对字体做的唯一的事情是

XSSFFont boldFont = (XSSFFont) wb.createFont();
boldFont.setBold(true);
titleRowStyle.setFont(boldFont);

unix shell运行

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

有可能解决这个问题吗?

1 回答

  • 0

    我在系统中找到了一个较旧的库版本:

    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
    

    然后我为最新的可用版本创建了一个符号链接,就像它将是版本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
    

相关问题