我想在我的Spring Boot项目中使用热插拔.不知怎的,我无法通过在我的IDE(IntelliJ)中运行它来使其工作,尽管文档涵盖了这个主题.我只需使用带有VM属性的main方法运行该类:
-javaagent:/path/to/jar/springloaded.jar -noverify
Run Code Online (Sandbox Code Playgroud)
我的问题是,我该如何使其发挥作用?:-)
进一步的问题是如何使用装有Gradle和IntelliJ的弹簧.我发现强制开发人员手动下载JAR,将其置于某处并使用JVM参数指向它是非常不方便的.有没有更好的方法(我应该配置自己的任务来完成工作并从我的IDE作为Gradle任务运行它)?
我想试试Spring Source的"Spring Loaded"类重载代理,Tomcat通过IntelliJ运行.
https://github.com/SpringSource/spring-loaded
我已经将JVM参数添加到我的Tomcat运行配置中,并且我的webapp启动时没有错误,似乎表现正常.
我不确定如何触发类重新加载.我只需要编译我修改的类吗?我试过了,但似乎没有用.我是否需要更新Tomcat并部署类和资源?这似乎也不起作用......?
任何具体的配置细节将不胜感激.
编辑:更多信息,我认为我的问题可能与使用两个模块有关,一个是核心代码库,另一个是webapp.我使用Maven,一个配置为jar项目,另一个配置为war项目.IntelliJ为爆炸的战争设置了神器,以使用jar模块的jar文件.我已经尝试切换Artifact配置,将jar模块的编译输出合并到WEB-INF/classes中.现在我在target/webapp/WEB-INF/class/etc中看到.class文件.但我不确定如何在编辑时让IntelliJ更新特定的类文件.
我有一个问题,当将Spring加载作为maven插件的依赖项时,调试在Intellij中停止工作.
情况1(工作):
使用带有声明的"Spring-boot-maven-plugin"的自动生成的spring-boot maven(pom.xml)文件,我可以使用intellij中的debug-maven命令调试我的应用程序.pom文件如下所示:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
情况2(不工作):
按照这里的引导线:spring-boot-hot-swapping应该为弹簧加载添加一个依赖项,以利用弹簧加载.pom文件现在看起来像:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
调试与以前相同的运行配置不起作用.断点永远不会变成"复选标记",代码永远不会暂停.代码现在正如人们期望的那样热切...如果我再次删除插件依赖性,调试再次开始工作......
请帮我做两个工作情况!
IntelliJ 14.1.3 Ultimate,Java 7,Spring启动1.2.4,Spring加载1.2.3
在Grails 3.0.0.M2中,弹簧重新加载会导致JDK 8u40出错.我可以在开发模式下禁用重新加载吗?是否有在build.gradle或application.yml中设置的密钥?
我今天在Spring网站上偶然发现了Spring Loaded项目.我正在尝试将它集成到Spring MVC中(使用Maven和TOMCAT)我一直在努力.
根据项目页面上的说明,我已经下载了JAR文件,并在TOMCAT VM参数(Inside Eclipse)中添加了以下内容:
-javaagent:C:\Users\xxx\Downloads\springloaded-1.2.0.RELEASE.jar -noverify
Run Code Online (Sandbox Code Playgroud)
我还禁用了TOMCAT中的"自动发布"功能.
现在,一旦我启动TOMCAT并对控制器(或任何其他类)进行任何更改,我看不到任何热部署发生.有什么我出错或是否需要任何其他配置?
将不胜感激任何投入.
我试图在Grails 3.1中禁用自动重新加载/重新编译,因为我想使用JRebel.我发现springloaded相当有限,但更重要的是经常失败
File /Users/engrun/Development/projects/grailsPoc/grails-app/controllers/grailsPoc/HelloController.groovy changed, recompiling...
java.lang.IllegalAccessException: Class org.springsource.loaded.ReloadableType can not access a member of class org.springframework.aop.framework.CglibAopProxy$ClassLoaderAwareUndeclaredThrowableStrategy with modifiers "public"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种可用的设置,但是,在运行run-app命令时,实际上都没有禁用重新加载
我试过了
disable.auto.recompile=true
Run Code Online (Sandbox Code Playgroud)
在命令行,GRAILS_OPTS和application.yml中
我试过了
-noreloading
Run Code Online (Sandbox Code Playgroud)
标志,在命令行和GRAILS_OPTS上.
根据文档,这应该有效 https://grails.org/wiki/Auto%20Reloading
答案接受为正确的答案 如何在grails 3.0.0应用程序中禁用重新加载? 也不起作用.
有没有人在Grails 3.1中成功禁用自动重新加载?(并使用JRebel成功配置了Grails 3?)
我有
TestController
grails.reload.enabled = true
在BuildConfig.groovy
grails -reloading run-app
我的控制器动作代码:
def index() {
render "test"
}
Run Code Online (Sandbox Code Playgroud)
当我将字符串更改test
为test2
- 时,我在控制台中看到(在Eclipse中):
..................
|Compiling 1 source files
Run Code Online (Sandbox Code Playgroud)
重新加载页面后,我看到了test2
- 好的.
但是当我尝试添加新方法时:
def test3() {
render "test3"
}
Run Code Online (Sandbox Code Playgroud)
我知道了:
为什么?为什么连网址都没有?
示例 - 操作不存在:
有趣的是 - 当我创建一个全新的控制器index
时,新创建的控制器的动作......
编辑
过了一会儿,我决定选择弹簧靴,事实上 - 它也没有用.我认为springloaded是这里的问题,因为它没有选择添加新方法@Controller
我使用带弹簧mvc的弹簧有一些问题.我在服务器上添加了弹簧加载的jar作为java代理.
现在,当我在我的情况下添加新方法时,我添加了一个新方法testHomes(),它给了我这个对话框.
我还检查了Build Automatically我正在使用spring framework 4.2.5.RELEASE.
我从以下链接SpringLoaded检查
与"热代码替换"不同,"热代码替换"仅在JVM运行时允许简单更改(例如,更改方法体),Spring Loaded允许您添加/修改/删除方法/字段/构造函数.还可以修改类型/方法/字段/构造函数的注释,并且可以在枚举类型中添加/删除/更改值.
有什么方法可以让我的工作吗?
问候,
我正在开发一个Vaadin 8用户界面.目前,每次修改UI时,我都必须重新启动我的应用程序.
有没有更好的办法?我尝试连接Java调试器并使用IntelliJ的Reload Changed Classes功能,但是hotswap失败了.
我在Vaadin的背景下看到了JRebel的提及,但我承担不起 - Spring Loaded似乎是另一种选择.还有别的事吗?
我似乎无法在任何地方找到它,并假设这个jar是作为其他东西的一部分构建的.谁知道我可以在哪里获得来源?我使用的是1.0.2版.
我刚刚下载了Grails 2.0.4并将其解压缩到/opt/grails/grails-2.0.4/并确保GRAILS_HOME环境变量是正确的.但每当我尝试运行"grails"命令时,我都会收到以下错误:
Error opening zip file or JAR manifest missing : /opt/grails/grails-2.0.4/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-1.0.2.jar
Error occurred during initialization of VM
agent library failed to init: instrument
Run Code Online (Sandbox Code Playgroud)
我不明白问题是什么.几个月来,我一直在Grails-2.0.1中以完全相同的方式成功使用Grails-2.0.1.我已经尝试重新下载grails-2.0.4.zip文件,希望它是存档的问题,但这没有帮助.我还从grails-2.0.1 /目录复制了springloaded-core-1.0.2.jar,但这只是导致了另一组错误.
什么可能出错?
spring-loaded ×11
spring ×6
grails ×5
java ×3
spring-mvc ×3
jrebel ×2
maven ×2
spring-boot ×2
tomcat ×2
debugging ×1
grails-2.4 ×1
grails-3.0 ×1
grails-3.1 ×1
groovy ×1
reload ×1
vaadin ×1
vaadin8 ×1