Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails2.4Java8和Tomcat7.0.55.2_Grails - Fatal编程技术网

Grails2.4Java8和Tomcat7.0.55.2

Grails2.4Java8和Tomcat7.0.55.2,grails,Grails,我正在尝试使用grails 2.4.4和tomcat插件运行https站点: build ':tomcat:7.0.55.2' 在首次尝试启动应用程序时,我遇到了以下问题: 当我将tomcat的tomcat依赖项更改为tomcat 8.0.22并再次运行应用程序时,它成功了,并且超出了createSSLCertificate(文件keystoreDir)的工作范围,尽管应用程序没有启动。如果我现在将其更改回tomcat 7.0.55.2,则已生成密钥,且应用程序正常工作 我想问题是我不确定Gr

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

build ':tomcat:7.0.55.2'
在首次尝试启动应用程序时,我遇到了以下问题:

当我将tomcat的tomcat依赖项更改为tomcat 8.0.22并再次运行应用程序时,它成功了,并且超出了createSSLCertificate(文件keystoreDir)的工作范围,尽管应用程序没有启动。如果我现在将其更改回tomcat 7.0.55.2,则已生成密钥,且应用程序正常工作

我想问题是我不确定Graeme指出的修复是否只存在于Tomcat8中,或者是否有一个更高版本的Tomcat7可以用于解决这个问题

虽然这种技术对于开发机器来说还可以,但我真的需要一些更具体的东西,以便通过jenkins等构建应用程序

要在本地重新创建,如果我执行

grails clean-all 
试一试

grails run-app -https 
我第一次触及这个问题,直到我再次重复上述步骤


想想看,Jenkins制作一个WAR文件实际上可能还不错,不过从开发的角度来看,找到一种更好的方法来实现这一切还是不错的。

我自己也遇到过这个问题。我曾尝试过在互联网上找到的其他解决方案,直到我偶然发现 这为我解决了这个问题,并使用-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'
    }
}
与:


你试过了吗\n你能升级到grails 2.5.x吗?我就是从这里开始的。我遇到了禁用分叉的问题:创建名为“defaultGrailslongConverter”的bean时出错。。无论如何,据我所知,Grails2.5仍然指向Tomcat7而不是8。这里的问题与Tomcat8中的修复程序有关。感谢您提供此代码片段,它可能会提供一些即时帮助。通过说明为什么这是一个很好的解决问题的方法,正确地解释它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请在回答中添加解释,并说明适用的限制和假设。作为Grails新手,可能很难知道如何编译Tomcatserver插件。关于这一点,我写了一个问题(和答案,但可能有更好的方法):@Björn Martin正在谈论grails tomcat的源项目——您通常会下载插件并在项目中编译它-@Vahid谢谢!我将尝试这个方法,并用我的发现更新我的答案。@Björn有两种选择-你需要保留一个特定插件的本地副本-最简单的方法是将修改后的插件放在本地-并添加一个本地行,然后当你执行grails war时-它会将该本地插件与产品的war文件打包在一起。如果你有像jenkins这样依赖于远程建筑的自动化流程,那么你可能需要一些本地中央回购协议才能将插件放入其中
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
    }
}