如果我从eclipse运行项目 - 没关系。如果我运行project作为runnable jar抛出异常:
.Exception in thread "main" java.lang.ExceptionInInitializerError
at de.intarsys.pdf.platform.cwt.font.freetype.FreetypeFontFactory.getLib
rary(Unknown Source)
at de.intarsys.pdf.platform.cwt.font.freetype.FreetypeFontFactory.create
PlatformFont(Unknown Source)
at de.intarsys.pdf.platform.cwt.rendering.CSPlatformDevice.textSetFont(U
nknown Source)
at de.intarsys.pdf.content.CSDeviceBasedInterpreter.render_Tf(Unknown So
urce)
at de.intarsys.pdf.content.CSInterpreter.process(Unknown Source)
at de.intarsys.pdf.content.CSInterpreter.process(Unknown Source)
at de.intarsys.pdf.content.CSDeviceBasedInterpreter.process(Unknown Sour
ce)
at RenderDoc.renderPage(RenderDoc.java:75)
at RenderDoc.renderPages(RenderDoc.java:97)
at RenderDoc.run(RenderDoc.java:139)
at RenderDoc.main(RenderDoc.java:48)
Caused by: java.lang.NullPointerException: no native interface available
at de.intarsys.nativec.api.NativeInterface.set(Unknown Source)
at de.intarsys.nativec.api.NativeInterface.get(Unknown Source)
at de.intarsys.cwt.freetype.nativec._FTNI.init(Unknown Source)
at de.intarsys.cwt.freetype.nativec._FTNI.<init>(Unknown Source)
at de.intarsys.cwt.freetype.Freetype.<clinit>(Unknown Source)
... 11 more
我的系统windows7 64位,java 8 64位。我觉得问题,那个freetype.dll在eclipse之外没见过。我在jar(jpod依赖项)中找到了它。我如何在包装罐中正确包含这个dll,以及为什么它可以在eclipse中运行?
答案 0 :(得分:1)
这个问题来自五月,但万一有人还有这个问题...... Freetype dll会自动从jar文件中提取到temp文件夹中并从那里加载。但是你得到的消息意味着无法初始化JNA桥。这是你的类路径的一个问题。您需要在类路径中使用jna.jar和其他jpod依赖项。
答案 1 :(得分:0)
如果在a predefined set of locations中找到共享库,JNA可以自动提取它们。
在Eclipse下运行时,java.classpath
的值很可能不同于独立运行(在启动时打印值以查看)。您需要确保您的类路径在两种情况下都是等效的,并且共享库包含在JNA可以访问并最终使用的路径下的最终部署中(如果JNA不能将共享库包含在jar中没有用)将其提取到系统可以加载的位置。
答案 2 :(得分:0)
我遇到了同样的问题,即无法在Windows系统上加载本机库。
原因:
我使用了WebSphere Java 8 Runtime,它无法正确提取本机库。
解决方案:
使用官方Oracle JRE 8。