gpt4 book ai didi

grails 2.4 java 8 和 tomcat 7.0.55.2

转载 作者:行者123 更新时间:2023-12-04 14:57:05 25 4
gpt4 key购买 nike

我正在尝试使用带有 tomcat 插件的 grails 2.4.4 运行 https 站点:

build ':tomcat:7.0.55.2'

在第一次尝试启动应用程序时,我遇到了以下问题: issue 648
java.lang.ClassNotFoundException: com.ibm.crypto.tools.KeyTool

当我将 tomcat 的 tomcat 依赖项更改为 tomcat 8.0.22 并再次运行应用程序时,它成功并超越了即 createSSLCertificate(File keystoreDir) 工作,尽管应用程序没有启动。如果我现在将其改回 tomcat 7.0.55.2,则 key 已生成并且应用程序可以运行。

我想问题是我不确定 Graeme 指出的修复程序是否只存在于 tomcat 8 中,或者是否有我可以使用的更高版本的 tomcat 7 可以解决这个问题。

虽然这个 hack 对于开发机器来说是可以的,但我真的需要一些更具体的东西,当通过 jenkins 等构建应用程序时。

要在本地重新创建它,如果我执行
grails clean-all 

并尝试
grails run-app -https 

我第一次遇到这个问题,直到我再次重复上述步骤。

考虑一下 Jenkins 生成 WAR 文件实际上可能很好,尽管从开发的角度来看,找到一种更好的方法来使这一切正常工作仍然很好。

最佳答案

我自己也遇到过这个问题。我尝试了在互联网上找到的其他一些解决方案,直到我偶然发现
https://github.com/grails/grails-profile-repository/pull/14/files
这帮我解决了这个问题并使用 -https 运行我的应用程序

转至 TomcatServer.groovy ,并替换:

protected getKeyToolClass() {
try {
Class.forName 'sun.security.tools.KeyTool'
}
catch (ClassNotFoundException e) {
// no try/catch for this one, if neither is foun\d let it fail
Class.forName 'com.ibm.crypto.tools.KeyTool'
}
}

和:
protected Class getKeyToolClass() {
try {
try {
// Sun JDK 8
return Class.forName('sun.security.tools.keytool.Main')
}
catch (ClassNotFoundException e1) {
try {
// Sun pre-JDK 8
return Class.forName('sun.security.tools.KeyTool')
}
catch (ClassNotFoundException e2) {
// no try/catch for this one, if neither is found let it fail
return Class.forName('com.ibm.crypto.tools.KeyTool')
}
}
}
catch (Throwable e) {
return null
}
}

关于grails 2.4 java 8 和 tomcat 7.0.55.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34151989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com