首页 > 解决方案 > 如何更改 Grails 2 的 Tomcat 7 插件源

问题描述

我正在使用带有 Tomcat 7.0.54 插件的 Grails 2.3.11。我的 Java 版本是 1.8.0_181。
当我尝试通过运行启用 https 来启动 grails 应用程序时

grails run-app --https

我得到以下异常:

java.lang.ClassNotFoundException: com.ibm.crypto.tools.KeyTool

我找到了有关如何修复 Tomcat 插件中错误代码的答案:https
://stackoverflow.com/a/44673672/1037864 但是我不知道如何应用我的更改。当我在 Tomcatserver.groovy 中编辑代码时,没有任何反应。我更改的代码永远不会执行。

然后我发现Tomcat插件是一个jar文件(位于“C:\Dev\myproject\webapp\target\work\plugins\tomcat-7.0.54\grails-plugin-tomcat-7.0.54.jar”)并且当我构建我的项目时,该 jar 文件没有更新。
在我的 BuildConfig.groovy 中它说:

build ":tomcat:7.0.54"

...所以我试图将其更改为:

compile ":tomcat:7.0.54"

但是当我尝试运行该项目时,我得到了另一个错误:

java.lang.NoClassDefFoundError: org/apache/catalina/startup/Tomcat at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive (Class.java:3048) 在 java.lang.Class.getMethod0(Class.java:3018) 在 java.lang.Class.getMethod(Class.java:1784) 在 sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:第544章)
引起:java.lang.ClassNotFoundException: org.apache.catalina.startup.Tomcat at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun .misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 更多
错误:发生 JNI 错误,请检查您的安装并重试

我想我缺少一些依赖项。
对 Tomcatserver.groovy 进行更改然后对其进行编译(并替换 jar 文件)的正确方法是什么?

标签: tomcatgrailsgrails-plugin

解决方案


我不知道是否有另一种方法,但我得到了它的工作方式:

  • 从Github下载 Tomcat 插件源代码。
  • 对源代码进行了更改。
  • grails upgrade
  • grails package-plugin --binary
  • 将新的 jar 文件 ( target\grails-plugin-tomcat-7.0.54.jar) 复制到我的主项目的 tomcat 目录 ( C:\Dev\myproject\webapp\target\work\plugins\tomcat-7.0.54\).
  • 开始了我的主要项目grails run-app --https

我现在可以在端口 8443 上使用 https 浏览我的网站。


推荐阅读