我应该将 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 文件。 我使用MavenGhost4J 包含到我的项目中,并将Ghostscript 安装到C:\Program Files\gs\... 中,但在此之后我仍然收到错误:

java.lang.UnsatisfiedLinkError: 无法加载库“gsdll64”

为了解决这个问题,我必须将文件gsdll64.dll 放在工作目录(通常是c:\eclipse)中作为proposed here。

到这里一切都很好,但是当我在集成环境(win7tomcat7)中部署应用程序时,我得到了这个异常:

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)

注册DLL文件

分析时,大部分时间都花在 nvoglv64.dll 中。我应该推断啥?

幽灵4J。 java.lang.UnsatisfiedLinkError:无法加载库“gsdll64”

java中执行操作javascript