12

我想试试 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 在编辑特定类文件时更新它。

4

2 回答 2

5

如果您将以下 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" ...

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

于 2013-09-16T11:50:08.567 回答
0

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

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

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

于 2017-06-14T13:52:28.080 回答