我应该将 gsdll64.dll 放在带有 windows7 和 tomcat7 的主机中的哪个位置?
Posted
技术标签:
【中文标题】我应该将 gsdll64.dll 放在带有 windows7 和 tomcat7 的主机中的哪个位置?【英文标题】:Where I should place gsdll64.dll in host with windows7 and tomcat7? 【发布时间】:2016-01-18 16:12:38 【问题描述】:我使用ghost4j GhostScript
在 web 应用程序中管理 TIFF 和 PDF 文件。
我使用Maven
将Ghost4J
包含到我的项目中,并将Ghostscript
安装到C:\Program Files\gs\...
中,但在此之后我仍然收到错误:
java.lang.UnsatisfiedLinkError: 无法加载库“gsdll64”
为了解决这个问题,我必须将文件gsdll64.dll
放在工作目录(通常是c:\eclipse
)中作为proposed here。
到这里一切都很好,但是当我在集成环境(win7
和 tomcat7
)中部署应用程序时,我得到了这个异常:
org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是 java.lang。NoClassDefFoundError:无法初始化类 org.ghost4j.GhostscriptLibrary。
我将Ghostscript
安装到主机中的C:\Program Files\gs\...
中,并且与this discussion 一样,我用try catch (Exception e)
包装了代码,但似乎没有帮助。
知道我应该将gsdll64.dll
放在哪里或如何解决错误吗?
【问题讨论】:
您是否尝试将 dll 放在 C:\Windows\System32 中? @TT。同样的错误... :( C:\Windows\SysWOW64(如果存在)?抱歉猜测=) @TT。不,再次... sig! 【参考方案1】:一种解决方案是将 dll 添加到 %JAVA_HOME%/jre/bin
,因为它通常位于 PATH 上。
或者将包含 dll 的目录添加到 PATH,因为在 Windows 上,java.library.path
是从 PATH 环境变量初始化的。
查看this thread on *** 以供参考。
对于 Tomcat 7,可以将gsdll64.dll
复制到%TOMCAT_HOME%\bin
目录或在%TOMCAT_HOME%\bin
目录下创建setenv.bat
并使用以下条目。
set PATH=%PATH%;C:\gs\gs9.18\bin
C:\gs\gs9.18
是安装的 Ghostscript 文件夹。检查 Apache Tomcat Native Library 安装文档。
【讨论】:
这个答案是有道理的,但实际上我已经尝试了两个选项都没有成功......我肯定缺少一些基本的东西......但我现在失明了...... 我从 github 下载了 Ghost4j 源代码,运行“mvn test”得到 UnsatisfiedLinkError 错误。将 gsdll64.dll 复制到 %JAVA_HOME%/jre/bin 后,该错误就消失了。我的 JAVA_HOME 设置为“C:\Program Files\Java\jdk1.8.0_66”,并将 %JAVA_HOME%/bin 添加到系统变量下路径的开头。可能是您的 java 是从“C:\Program Files \Java\jre1.8.0_66\bin" 而不是 "C:\Program Files\Java\jdk1.8.0_66\jre\bin"。 如果您阅读我的问题,您会发现我在开发环境中这样做没有问题,但我的问题在于集成,主机和客户端机器不同(什么不应该影响... ) 和错误也不同NoClassDefFound
....
不知何故错过了 Tomcat7 部分。将gsdll64.dll放在Tomcat/bin文件夹下应该可以正常加载了。以上是关于我应该将 gsdll64.dll 放在带有 windows7 和 tomcat7 的主机中的哪个位置?的主要内容,如果未能解决你的问题,请参考以下文章
Ghost4J库安装,找不到gsdll64.dll或libgs.so报错
Java 和 Ghostscript(ghost4j 和 gsdll32.dll)
分析时,大部分时间都花在 nvoglv64.dll 中。我应该推断啥?