【问题标题】:IntelliJ + Tomcat + Spring-LoadedIntelliJ + Tomcat + Spring-Loaded
【发布时间】:2013-02-27 17:42:24
【问题描述】:

我想试用 Spring Source 的“Spring Loaded”类重载代理,Tomcat 通过 IntelliJ 运行。

https://github.com/SpringSource/spring-loaded

我已将 JVM 参数添加到我的 Tomcat 运行配置中,并且我的 web 应用程序启动时没有错误,并且似乎运行正常。

我不太确定如何触发类重新加载。我只需要编译我修改的类吗?我已经尝试过了,但这似乎不起作用。我需要更新 Tomcat 并部署类和资源吗?这似乎也不起作用......?

任何具体的配置细节将不胜感激。

编辑:更多信息,我认为我的问题可能与使用两个模块有关,一个是核心代码库,一个是 webapp。我对两者都使用 Maven,一个配置为 jar 项目,另一个配置为 war 项目。 IntelliJ 为爆战设置 Artifact 以使用 jar 模块的 jar 文件。我尝试切换 Artifact 配置以将 jar 模块的编译输出合并到 WEB-INF/classes 中。现在我在 target/webapp/WEB-INF/class/etc 中看到了 .class 文件。但我不确定如何让 IntelliJ 在编辑特定类文件时更新它。

【问题讨论】:

  • 您是否找到了一种使用 Spring Loaded 处理子模块的方法?
  • 还没有。我已经很久没有回来做这个了。

标签: spring tomcat spring-mvc intellij-idea spring-loaded


【解决方案1】:

如果您将以下 jvm 参数(如 springloaded 页面中所述)添加到您的 tomcat 中

-javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass

你应该没事的。它可能有助于禁用您正在测试的 web 应用程序的 tomcat 中的自动重新加载。例如在您的 server.xml 中:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Context docBase="projekt" path="/projekt" reloadable="false" ...

这确保只有弹簧加载的类加载器加载更改的类。

【讨论】:

  • 感谢您的回答。是什么触发了 springloaded 类加载器重新加载更改的类?它只是周期性地发生吗?它是否监视类文件的时间戳更改?还是我需要在 IntelliJ 中执行一个动作来触发它?
  • 根据github.com/spring-projects/spring-loaded 类文件每秒监视一次更改。
  • 抱歉,您是如何使用 IntelliJ 进行更改的?我的意思是,这是不可能使用 IntelliJ 更改的,因为您无法看到“server.xml”,是吗?
  • 有旧 jars 和旧类文件的服务器位置。新编译的类的位置定义在哪里?
  • @I.Cougil 在 IntelliJ 中,您将其作为 VM 选项 添加到您已创建并正在部署到的 Tomcat 服务器的运行/调试配置中。在我的情况下,VM 选项具有以下-javaagent:c:/dev/springloaded-1.2.4.RELEASE.jar -noverify
【解决方案2】:

弹簧加载不能热插拔罐子。

将网页片段输出放入webapp/WEB-INF/classes

弹簧加载也仅支持弹簧 4.1 https://github.com/spring-projects/spring-loaded/issues/139

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 2015-09-09
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2014-06-23
    • 2015-05-15
    相关资源
    最近更新 更多