3

Apache POI を使用してスプレッドシートを書き出します。問題のある行は、私が呼び出す場所Sheet#autoSizeColumn(int column)です。グラフィカル環境のない UNIX シェルで実行すると、次の例外が表示されます。

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 のクイック ガイドによると、ヘッドレス環境を通知するように設定する必要があるプロパティがあるため、次の呼び出しを試みます。

 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 シェルが実行されます

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

この問題を修正することは可能ですか?

4

2 に答える 2

2

システムで古いバージョンのライブラリを見つけました:

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
于 2015-12-13T23:03:01.353 に答える