Heroku にjavaの動的Webアプリケーションをデプロイしました。
PDFlibというサードパーティ製のjarを組み込んでいますが、それがさらにpdflib_java.soを参照するため、
ネイティブライブラリの参照先を設定しているのですが、ロードできてません。
file
1├── Procfile 2├── README.md 3├── lib 4│ ├── libpdflib_java.so ←ここに参照させたいライブラリを設置 5│ └── pdflib.jar 6├── pom.xml 7├── src 8│ ├── log4j2.xml 9│ ├── main 10│ │ ├── java 11│ │ ├── resources 12│ │ │ └── application.properties 13│ │ └── webapp 14│ │ ├── WEB-INF 15│ │ │ ├── data 16│ │ │ │ ├── block_template.pdf 17│ │ │ └── web.xml 18│ │ ├── index.jsp 19│ └── test 20│ └── java 21
Herokuの環境変数
LD_LIBRARY_PATH に "/app/lib/" を設定しています。
最後のスラッシュはつけたり外したりと試しました。
アプリケーションを実行すると以下の様になってしまいます。
log
12020-01-10T02:35:40.420900+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 22020-01-10T02:35:40.438647+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8 32020-01-10T02:35:41.207914+00:00 app[web.1]: Cannot load the PDFlib shared library/DLL for Java. 42020-01-10T02:35:41.207923+00:00 app[web.1]: Make sure to properly install the native PDFlib library. 52020-01-10T02:35:41.207926+00:00 app[web.1]: 62020-01-10T02:35:41.207928+00:00 app[web.1]: For your information, the current value of java.library.path is: 72020-01-10T02:35:41.207931+00:00 app[web.1]: app/lib 82020-01-10T02:35:41.208207+00:00 app[web.1]: 92020-01-10T02:35:41.209576+00:00 app[web.1]: Exception in thread "main" java.lang.UnsatisfiedLinkError: no pdflib_java in java.library.path 102020-01-10T02:35:41.209898+00:00 app[web.1]: at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) 112020-01-10T02:35:41.210002+00:00 app[web.1]: at java.lang.Runtime.loadLibrary0(Runtime.java:870) 122020-01-10T02:35:41.210103+00:00 app[web.1]: at java.lang.System.loadLibrary(System.java:1122)
ライブラリのファイル名は先頭にlibをつけるという制約があるのか、
実際のファイル名はlibpdflib_java.soなのに「pdflib_java」が読めないというエラーでした。
ためしにpdflib_java.soでデプロイしても同じ結果です。
また、Herokuのconfig varsを変更してみても
「For your information, the current value of java.library.path is: app[web.1]: app/lib」
となっており、環境変数が読めていないようにも見えます。
ネイティブライブラリを読めるようにするにはどうしたらよいでしょうか?
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー