This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 233916

Summary: Persistent breakpoint at java.lang.Throwable with jrebel
Product: javaee Reporter: everflux <everflux>
Component: DebuggerAssignee: Martin Entlicher <mentlicher>
Status: VERIFIED WORKSFORME    
Severity: normal    
Priority: P3    
Version: 7.4   
Hardware: PC   
OS: Linux   
Issue Type: DEFECT Exception Reporter:

Description everflux 2013-08-04 14:16:36 UTC
Product Version: NetBeans IDE Dev (Build 201308032300)
Java: 1.7.0_25; Java HotSpot(TM) 64-Bit Server VM 23.25-b01
Runtime: Java(TM) SE Runtime Environment 1.7.0_25-b15

I have a maven web project which I launch through Netbeans on Tomcat. For some reason I get breakspoint hits "at exception breakpoint java.lang.Throwable".
This leads to continous context switches to the breakpoint during my development.

When ever I switch to a class from my project I get an error dialog:
"The debugger does not support Hot Fix action. details: schema change not implemented"

In the tomcat log I get exceptions:

2013-08-04 16:11:45 Test: ERROR An error occured in org.zeroturnaround.javarebel.integration.util.WeakUtil$WeakClassEventListenerAdapter@11fb27ac[org.zeroturnaround.javarebel.integration.util.ClassEventListenerUtil$BoundClassEventListener@7d5d7384(org.apache.catalina.loader.WebappClassLoader@3a1f93b)[org.hibernate.validator.internal.engine.ValidatorFactoryImpl@24b1f69]] a null plugin while handling a class reload event:: java.lang.NoClassDefFoundError: org/hibernate/validator/internal/util/ConcurrentReferenceHashMap$KeySet
	at org.hibernate.validator.internal.util.ConcurrentReferenceHashMap.keySet(ConcurrentReferenceHashMap.java:1351)
	at org.hibernate.validator.internal.metadata.BeanMetaDataManager.__resetBeanMetaData(BeanMetaDataManager.java)
	at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.onClassEvent(ValidatorFactoryImpl.java)
	at org.zeroturnaround.javarebel.integration.util.ClassEventListenerUtil$BoundClassEventListener.onClassEvent(JRebel:74)
	at org.zeroturnaround.javarebel.integration.util.WeakUtil$WeakClassEventListenerAdapter.onClassEvent(JRebel:319)
	at com.zeroturnaround.javarebel.wA.a(JRebel:149)
	at com.zeroturnaround.javarebel.wt.a(JRebel:78)
	at com.zeroturnaround.javarebel.SDKReloaderImpl.firePendingReloadListeners(JRebel:48)
	at com.zeroturnaround.javarebel.SDKReloaderImpl.fireReloadListeners(JRebel:103)
	at com.zeroturnaround.javarebel.Dj.reloadClass(JRebel:800)
	at com.zeroturnaround.javarebel.Dx.a(JRebel:241)
	at com.zeroturnaround.javarebel.Dx.b(JRebel:223)
	at com.zeroturnaround.javarebel.Dx.b(JRebel:214)
	at com.zeroturnaround.javarebel.DC.b(JRebel:87)
	at com.zeroturnaround.javarebel.SDKReloaderImpl.checkAndReload(JRebel:64)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.beforeRegisterBeanDefinition(SpringBeanReloader.java:404)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.beforeRegisterBeanDefinition(SpringBeanReloader.java:373)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java)
	at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.registerBeanDefinition(BeanDefinitionReaderUtils.java:148)
	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.registerBeanDefinition(ClassPathBeanDefinitionScanner.java:285)
	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:257)
	at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.reparse(ComponentScanBeanDefinitionParser.java:84)
	at org.zeroturnaround.javarebel.integration.spring.annotations.ComponentScannerXml.scan(ComponentScannerXml.java:44)
	at org.zeroturnaround.javarebel.integration.spring.annotations.AnnotationBeanDefinitionManager.doRescan(AnnotationBeanDefinitionManager.java:113)
	at org.zeroturnaround.javarebel.integration.spring.annotations.AnnotationBeanDefinitionManager.rescan(AnnotationBeanDefinitionManager.java:93)
	at org.zeroturnaround.javarebel.integration.spring.annotations.AnnotationBeanDefinitionManager.checkRescan(AnnotationBeanDefinitionManager.java:78)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.reloadBeanDefinitionsInternal(SpringBeanReloader.java:522)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.reloadBeanDefinitions(SpringBeanReloader.java:503)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.doCheckAndReloadBeanDefinitions(SpringBeanReloader.java:469)
	at org.zeroturnaround.javarebel.integration.spring.SpringBeanReloader.beforeRequest(SpringBeanReloader.java:182)
	at org.zeroturnaround.javarebel.integration.util.RequestListenerUtil$BoundRequestListener.beforeRequest(JRebel:88)
	at org.zeroturnaround.javarebel.integration.util.WeakUtil$WeakRequestListener.beforeRequest(JRebel:374)
	at com.zeroturnaround.javarebel.xf.a(JRebel:124)
	at com.zeroturnaround.javarebel.xf.a(JRebel:81)
	at com.zeroturnaround.javarebel.xf.fireBeforeRequest(JRebel:64)
	at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:167)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:724)

Aug 04, 2013 4:11:45 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/pricetool-app] has started

The application is responsive and seems to work, though.

When not launching from the IDE but from CLI with "maven jetty:run" and jrebel java agent, Netbeans doing compile on save, everything works smoothly.

I am not sure if this is Netbeans, maven, tomcat or jrebel related.
Comment 1 everflux 2013-08-04 14:18:55 UTC
BTW: I have removed all breakpoints and made sure that I did not have any set at java.lang.Throwable.
Comment 2 arhan 2013-08-22 20:33:12 UTC
This is not a debugger problem. The stacktrace refers to Hibernate/Spring integration in JRebel. Please report this issue to JRebel forum (if you haven't yet).
Comment 5 Martin Entlicher 2013-08-31 16:35:53 UTC
Please check Tools -> Options -> Java -> Java Debugger -> General -> "Stop on uncaught exceptions" option. It's likely checked on, unchecking this should solve the exception breakpoint problem.
"schema change not implemented" likely means, that the next option "Apply code changes after save" is also turned on. Debugger is then trying to apply code changes in JVM, which does not support schema changes. Since it does not have sense when you use JRebel, turn this off.
These options should solve this issue.
Comment 6 everflux 2013-09-01 09:22:15 UTC
Awesome, thank you very very much!
Comment 7 everflux 2013-09-13 19:38:22 UTC
Works great with jrebel+tomcat+netbeans 7.4rc1 (I did not use the jrebel plugin, but configured the apache platform arguments)
Comment 8 Martin Entlicher 2013-09-15 15:53:08 UTC
Thanks for confirmation.