Giter Club home page Giter Club logo

hotswapagent's Introduction

Hotswap Agent

Maven Build Status License: GPL v2 Gitter follow on Twitter

This is an overview page, please visit hotswapagent.org for more information.

Overview


Java unlimited runtime class and resource redefinition.

Originally, the main purpose of this project was to avoid the infamous change code -> restart and wait... -> check development lifecycle. Lately, this schema evolved into a new paradigm in the Java world, based on the development of software in running application, that approach can be used even in a closed environment like Docker.

Easy to start

1.Download and install:

  • For Java17/21: latest JBR17,21 and since JBR17,21 does not include a built-in Hotswap Agent, copy hotswap-agent.jar to the lib/hotswap folder. The latest Hotswap Agent can be found here. When using the agent, it's important to note that the file name in lib/hotswap folder should not contain the version name, and should instead use the plain hotswap-agent.jar filename.
  • For Java11: jdk11-dcevm with integrated HotswapAgent and install it as an alternative JDK. TravaJDK already contains embedded HotswapAgent.
  • For Java8: jdk8-dcevm + HotswapAgent

2.HotswapAgent modes

Starting with dcevm-11.0.9, the HotswapAgent is disabled by default. Support for HotswapAgent can now be enabled by JVM options in three different modes:

  • XX:HotswapAgent=fatjar activates the internal fatjar HotswapAgent.
  • XX:HotswapAgent=core activates the internal core HotswapAgent.
  • XX:HotswapAgent=external configures JVM support for HotswapAgent and defers the settings of an external HotswapAgent to the user. The user must supply hotswap-agent.jar using -javaagent:<path>/hotswap-agent.jar.

The HotswapAgent=core mode operates without plugins, except for core JVM plugins. This mode is faster because it requires fewer scanning tasks and less class copying. Additional plugins must be configured as Maven dependencies in the pom.xml file. In contrast, the HotswapAgent=fatjar mode includes all plugins from the start, which slightly slows down the application startup.

3.Launching:

  • Java17/21: launch your application with the options -XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=fatjar to turn on advanced hotswap (dcevm) and use Hotswap Agent fatjar release. As an alternative core or external modes can be used insted of fatjar.
  • Java11: launch your application with the options -XX:HotswapAgent=fatjar to use Hotswap Agent fatjar release.
  • Java8: launch your application with the options -XXaltjvm=dcevm -javaagent:hotswap-agent.jar to get a basic setup. Optionally you can add hotswap-agent.properties to your application to configure plugins and agent's behavior.

3.Run your application:

Start the application in debug mode, check that the agent and plugins are initialized correctly:

    HOTSWAP AGENT: 9:49:29.548 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent - unlimited runtime class redefinition.
    HOTSWAP AGENT: 9:49:29.725 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [org.hotswap.agent.plugin.hotswapper.HotswapperPlugin, org.hotswap.agent.plugin.jvm.AnonymousClassPatchPlugin, org.hotswap.agent.plugin.hibernate.HibernatePlugin, org.hotswap.agent.plugin.spring.SpringPlugin, org.hotswap.agent.plugin.jetty.JettyPlugin, org.hotswap.agent.plugin.tomcat.TomcatPlugin, org.hotswap.agent.plugin.zk.ZkPlugin, org.hotswap.agent.plugin.logback.LogbackPlugin]
    ...
    HOTSWAP AGENT: 9:49:38.700 INFO (org.hotswap.agent.plugin.spring.SpringPlugin) - Spring plugin initialized - Spring core version '3.2.3.RELEASE'

4.Check redefinition

Save a changed resource and/or use the HotSwap feature of your IDE to reload changes

Plugins

Each application framework (Spring, Hibernate, Logback, ...) needs a special reloading mechanism to keep up-to-date after class redefinition (e.g. Hibernate configuration reload after new entity class is introduced). Hotswap agent works as a plugin system and is shipped preconfigured with all major framework plugins. It is easy to write your custom plugin even as part of your application.

Contribute

This project is very complex due to a lot of supported frameworks and various versions. Community contribution is mandatory to keep it alive. You can start by creating a plugin inside your application or by writing an example/integration test. There is always a need for documentation improvement :-). Thank you for any help!

What is available?

  • Enhanced Java Hotswap - change method body, add/rename a method, field, ... The only unsupported operation is hierarchy change (change the superclass or remove an interface).
    • You can use standard Java Hotswap from IDE in debug mode to reload changed class
    • or set autoHotswap property -XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar=autoHotswap=true to reload changed classes after compilation. This setup allows even reload on a production system without a restart.
  • Automatic configuration - all local classes and resources, known to the running Java application, are automatically discovered and watched for the reload (all files on the local filesystem, not inside any JAR file).
  • Extra classpath - Need change a runtime class inside dependent JAR? Use extraClasspath property to add any directory as a classpath to watch for class files.
  • Reload resource after a change - resources from the webapp directory are usually reloaded by the application server. But what about other resources like src/main/resources? Use watchResources property to add any directory to watch for a resource change.
  • Framework support - through plugin-system, many frameworks are supported. New plugins can be easily added.
  • Fast - until the plugin is initialized, it does not consume any resources or slow down the application (see Runtime overhead for more information)

Should you have any problems or questions, ask at HotswapAgent forum.

This project is similar to JRebel. The main differences are:

  • HotswapAgent (DCEVM) supports Java8, Java11 and Java17!
  • HotswapAgent does not need any additional configuration for basic project setup.
  • JRebel is currently more mature and contains more plugins.
  • JRebel is neither open source nor free.
  • JRebel modifies bytecode of all classes on reload. You need a special IDE plugin to fix debugging.
  • HotswapAgent extraClasspath is similar to JRebel configuration
  • HotswapAgent adds watchResources configuration

Examples

See HotswapAgentExamples GitHub project. The purpose of an example application is:

  • complex automate integration tests (check various configurations before a release, see run-tests.sh script)
  • to check "real world" plugin usage during plugin development (i.e. inside a container)
  • to provide a working solution for typical application setups
  • sandbox to simulate issues for existing or new setups

Feel free to fork/branch and create an application for your setup (functional, but as simple as possible). General setups will be merged into the master.

IDE support

None needed :) Really! All changes are transparent and all you need to do is to download patch+agent and setup your application/application server. Because we use standard java hotswap behaviour, your IDE will work as expected. However, we work on IDE plugins to help with download & configuration.

Configuration

The basic configuration is set to reload classes and resources from the classpath known to the running application (classloader). If you need a different configuration, add the hotswap-agent.properties file to the classpath root (e.g. src/main/resources/hotswap-agent.properties).

Detail documentation of available properties and default values can be found in the agent properties file

Hotswap agent command-line options

Full syntax of command line options is:

-javaagent:[yourpath/]hotswap-agent.jar=[option1]=[value1],[option2]=[value2]

Hotswap agent accepts the following options:

  • autoHotswap=true - watch all .class files for change and automatically Hotswap the class in the running application (instead of running Hotswap from your IDE debugging session)
  • disablePlugin=[pluginName] - disable a plugin. Note that this will completely forbid the plugin to load (opposite to disablePlugin option in hotswap-agent.properties, which will only disable the plugin for a classloader. You can repeat this option for every plugin to disable.

How does it work?

DCEVM

Hotswap agent does the work of reloading resources and framework configuration (Spring, Hibernate, ...), but it depends on the standard Java hotswap mechanism to reload classes. Standard Java hotswap allows only method body change, which makes it practically unusable. DCEVM is a JVM (Hotspot) patch that allows almost any structural class change on hotswap (with an exception to a hierarchy change). Although hotswap agent works even with standard java, we recommend using DCEVM (and all tutorials use DCEVM as target JVM).

Hotswap Agent

Hotswap agent is a plugin container with plugin manager, plugin registry, and several agent services (e.g. to watch for class/resource change). It helps with common tasks and classloading issues. It scans the classpath for class annotated with @Plugin annotation, injects agent services, and registers reloading hooks. Runtime bytecode modification is provided by javaasist library.

Plugins

Plugins administered by Hotswap Agent are usually focused on a specific framework. For example, Spring plugin uses HA services to:

  • Modify root Spring classes to get Spring contexts and registered scan path
  • Watch for any resource change on a scan path
  • Watch for a hotswap of a class file within a scan path package
  • Reload bean definition after a change
  • ... and many others

Java frameworks plugins:

  • CXF-JAXRS (3.x) - redefine JAXRS resource after resource class redefinition, reinject instance if integrated with Spring and CDI (Weld/OWB).
  • Deltaspike (1.x) - messages, ViewConfig, repository, proxy reloading. Deltaspike scoped CDI beans reinjection.
  • ELResolver 2.2 (JuelEL, Appache Commons EL, Oracle EL 3.0)- clear ELResolver cache on class change. Support hotswap for #{...} expressions.
  • FreeMarker - clear the Apache Freemarker beans class-introspection cache on class definition change.
  • Hibernate (3x,4x,5x) - Reload Hibernate configuration after entity create/change.
  • iBatis - iBatis configuration reload.
  • IDEA - support for IntelliJ IDEA development in IDEA
  • Jackson - clears jackson internal caches when class redefined.
  • Jersey1 - reload Jersey1 container after root resource or provider class definition or redefinition.
  • Jersey2 - reload Jersey2 container after root resource or provider class definition or redefinition.
  • Logback - Logback configuration reload.
  • Log4j2 - Log4j2 configuration reload.
  • Mojarra (2.1,2.2) - support for application resource bundle changes (properties file). Support for ViewScoped beans reinjection/reloading.
  • MyBatis (5.3) - reload configuration after mapper file changes
  • MyFaces (2.2) - support for application resource bundle changes (properties files). Support for ViewScoped beans reinjection/reloading.
  • OmniFaces - support for ViewScoped beans reinjection/reloading.
  • OpenWebBeans - (CDI) (1.x, 2.x) - reload bean class definition after class definition/change. Beans can be reloaded according strategy defined in property file.
  • OsgiEquinox - Hotswap support for Eclipse plugin or Eclipse platform development.
  • RestEasy (2.x, 3.x) - Cleanups and registers class redefinitions.
  • Spring (3.2.x+, 4.x, 5.x) - Reload Spring configuration after class definition/change.
  • Spring Boot (1.5.x+, 2.0.x) - Dynamic reloading of Spring Boot configuration files in real-time.
  • Vaadin (23.x, 24.x) - Update routes, template models and in practice, anything on the fly.
  • WebObjects - Clear key value coding, component, action and validation caches after class change.
  • Weld (CDI) (2.2,2.3,3.x) - reload bean class definition after class definition/change. Beans can be reloaded according strategy defined in property file.
  • Wicket - clear wicket caches if property files are changed
  • WildFlyELResolver - Clear BeanELResolver after any class redefinition.
  • ZK (5x-7x) - ZK Framework (http://www.zkoss.org/). Change library properties default values to disable caches, maintains Label cache and bean resolver cache.

Servlet containers and application servers plugins:

  • JBossModules - add extra class path to JBoss's module class loader. (Wildfly)
  • Jetty - add extra classpath to the app classloader. All versions supporting WebAppContext.getExtraClasspath should be supported.
  • Tomcat (7.x, 8.x) configure Apache Tomcat with extraClasspath and webApp property. Supports also GlassFish, Payara and Tomee7.
  • Undertow - add extra classpath, watchResources and webappDir to the undertow's resource manager.
  • Weblogic - add extra classpath to the app classloader.

JVM plugins - hotswapping enhancements:

  • AnonymousClassPatch - Swap anonymous inner class names to avoid not compatible changes.
  • ClassInit - initializes new static members/enum values after class/enum redefinition and keeps surviving static values. (Fix of known DCEVM limitation)
  • Hotswapper - Watch for any class file change and reload (hotswap) it on the fly via Java Platform Debugger Architecture (JPDA)
  • Proxy (supported com.sun.proxy, CGlib) - redefines proxy classes that implement or extend changed interfaces or classes.

Find detailed documentation of each plugin in the plugin project main README.md file.

Runtime overhead

It depends on how many frameworks you use and which caches are disabled. Example measurements for a large, real-world enterprise application based on Spring + Hibernate, run on Jetty.

Setup                        | Startup time
-----------------------------|-------------
Run (plain Java)             | 23s
Debug (plain Java)           | 24s
Debug (plain DCEVM)          | 28s
Agent - disabled all plugins | 31s
Agent - all plugins          | 35s

How to write a plugin

You can write plugin directly as a part of your application. Set pluginPackages=your.plugin.package inside your hotswap-agent.properties configuration to discover @Plugin annotated classes. You will also need agent JAR dependency to compile, but be careful NOT to add the JAR to your application; it must be loaded only as a javaagent. Maven dependency:

    <dependency>
        <groupId>org.hotswapagent</groupId>
        <artifactId>HotswapAgent</artifactId>
        <version>${project.version}</version>
        <scope>provided</scope>
    </dependency>

See ExamplePlugin (part of TestApplication) to go through a commented simple plugin. Read agent readme to understand agent concepts. Check existing plugins source code for more examples.

Creating Release

Launch run-tests.sh script in the main directory. Currently, you have to set up JAVA_HOME location directory manually. At least Java 11 with DCEVM should be checked before a release. All automatic tests are set to fail the whole script in case of any single test failure.

Go to the directory representing repository root. In case DCEVM is named dcevm

mvn release:prepare
mvn release:perform

Credits

Hotswap agent:

  • Jiri Bubnik - project coordinator, initial implementation
  • Alexandros Papadakis - Maven Versioning, Weld, JSF, Hibernate3, RestEasy, WildFly plugins
  • Erki Ehtla - Spring plugin, Proxy plugin
  • Vladimir Dvorak - ELResolver, OsgiEquinox, Weld, Owb, Deltaspike, Jvm, Jdk, JBossModules, ClassInit, JSF, Mybatis
  • Sergey Lysenko - Weld plugin
  • Samuel Pelletier - WebObjects plugin
  • Jan Tecl - web design
  • @liuzhengyang - jackson plugin
  • Lukasz Warzecha - Log4j2 plugin
  • @muwaiwai - iBatis plugin
  • Thomas Heigl - Wicket plugin
  • AJ Banck - FreeMarker plugin
  • Sinan Yumak - Mojarra, MyFaces plugins
  • smallfour - Mybatis plugin
  • @cvictory - Spring plugin, Spring Boot plugin

DCEVM:

  • Ivan Dubrov - current project coordinator, update to Java7+Java8, patches, build system (Gradle)
  • Thomas Würthinger - initial implementation.
  • Kerstin Breitender - contributor.
  • Christoph Wimberger - contributor.
  • Vladimir Dvorak - java9,java11,jbr17,jbr21 migration, contributor
  • Jiri Bubnik - java9,java11 migration

hotswapagent's People

Contributors

alpapad avatar artur- avatar atilacamurca avatar beiwei30 avatar brandstaetter avatar cvictory avatar disseminator avatar divijshrivastava avatar edudant avatar erkieh avatar hightower1991 avatar josehmaza avatar lancethomps avatar liuzhengyang avatar mstahv avatar muwaiwai avatar nick-the-uncharted avatar nicklaswallgren avatar philippefichet avatar raymondlam1 avatar ruediste avatar sinanyumak avatar skybber avatar smallfour avatar spelletier avatar theigl avatar tporeba avatar xnike avatar zunpiau avatar zzhlhc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hotswapagent's Issues

Tomcat 8 deployment fails with spring

WatchHandler.registerResources() fails with tomcat 8 (everything works fine with tomcat 7). Seems to be a classpath issue. Here is a stacktrace with a spring config file :

at java.lang.Thread.run(Thread.java:745) [?:1.7.0_71]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasyncManagerFactory' defined in URL [jar:file:/D:/tools/apache-tomcat/8.0.3/webapps/arsm-ws/WEB-INF/lib/app-3.2.jar!/spring/app-core-datasource.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) ~[AbstractBeanFactory$1.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) ~[DefaultSingletonBeanRegistry.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) ~[AbstractBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[AbstractBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:424) ~[DefaultListableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277) ~[BeanFactoryUtils.class:3.1.2.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139) ~[PersistenceExceptionTranslationInterceptor.class:3.1.2.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.(PersistenceExceptionTranslationInterceptor.java:79) ~[PersistenceExceptionTranslationInterceptor.class:3.1.2.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.(PersistenceExceptionTranslationAdvisor.java:70) ~[PersistenceExceptionTranslationAdvisor.class:3.1.2.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103) ~[PersistenceExceptionTranslationPostProcessor.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1475) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1443) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
... 55 more
Caused by: java.lang.NullPointerException
at org.hotswap.agent.annotation.handler.WatchHandler.registerResources(WatchHandler.java:82) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.annotation.handler.WatchHandler.initMethod(WatchHandler.java:48) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.annotation.handler.AnnotationProcessor.processMethodAnnotations(AnnotationProcessor.java:135) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.annotation.handler.AnnotationProcessor.processAnnotations(AnnotationProcessor.java:102) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.config.PluginRegistry.initializePlugin(PluginRegistry.java:158) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.util.PluginManagerInvoker.callInitializePlugin(PluginManagerInvoker.java:26) ~[hotswap-agent.jar:0.2]
at org.hotswap.agent.plugin.hibernate.HibernatePersistenceHelper.initPlugin(HibernatePersistenceHelper.java:77) ~[catalina.jar:0.2]
at org.hotswap.agent.plugin.hibernate.HibernatePersistenceHelper.createContainerEntityManagerFactoryProxy(HibernatePersistenceHelper.java:43) ~[catalina.jar:0.2]
at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java) ~[HibernatePersistenceProvider.class:4.3.7.Final]
at org.hibernate.ejb.HibernatePersistence._createContainerEntityManagerFactoryHibernatePersistence(HibernatePersistence.java:67) ~[HibernatePersistence.class:4.3.7.Final]
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java) ~[HibernatePersistence.class:4.3.7.Final]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:268) ~[LocalContainerEntityManagerFactoryBean.class:3.1.2.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) ~[AbstractEntityManagerFactoryBean.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) ~[AbstractBeanFactory$1.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) ~[DefaultSingletonBeanRegistry.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) ~[AbstractBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[AbstractBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:424) ~[DefaultListableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277) ~[BeanFactoryUtils.class:3.1.2.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139) ~[PersistenceExceptionTranslationInterceptor.class:3.1.2.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.(PersistenceExceptionTranslationInterceptor.java:79) ~[PersistenceExceptionTranslationInterceptor.class:3.1.2.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.(PersistenceExceptionTranslationAdvisor.java:70) ~[PersistenceExceptionTranslationAdvisor.class:3.1.2.RELEASE]
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103) ~[PersistenceExceptionTranslationPostProcessor.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1475) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1443) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ~[AbstractAutowireCapableBeanFactory.class:3.1.2.RELEASE]
... 55 more

Spring MVC support (@RequestMapping)

I think HotswapAgent does not support reloading @RequestMapping routes in beans.

I think all that needs to be done is on a bean change with a @RequestMapping annotation is look in the ApplicationContext for all derivations of AbstractUrlHandlerMapping and call initApplicationContext().

You could reload the HandlerMapping beans but you can't just clear the HashMaps in them as the the URLs are only calculated on initialization. You also can't call setApplicationContext as that will think nothing has changed.

I'll look into trying the above unless others have thoughts?

Ignore IDE files

Let's remove *.iml, .ide, etc. files from VCS and add them to .gitignore.
Right now anytime I open my IntelliJ I get all those files as modified in changelist.

[spring] Refresh @Autowired field

Hi

when I add a new attribute annotated with Autowired, the value stills null after refresh. The spring plugin is enable because I see outputs when the bean is reloaded.

Did I miss something or this kind of support is not already provided by the agent?

Thanks!

Wildfly 8.1 error

When Wildfly 8.1 app server starts, the following error happens:

15:12:02,003 INFO  [stdout] (MSC service thread 1-6) HOTSWAP AGENT: 15:12:2.003 WARNING (org.hotswap.agent.plugin.elresolver.ELResolverPlugin) - Unable to add javax.el.BeanELResolver.purgeBeanClasses() method. Purging will not be available.
15:12:02,003 INFO  [stdout] (MSC service thread 1-6) org.hotswap.agent.javassist.NotFoundException: purgeBeanClasses(..) is not found in javax.el.BeanELResolver
15:12:02,003 INFO  [stdout] (MSC service thread 1-6)    at org.hotswap.agent.javassist.CtClassType.getDeclaredMethod(CtClassType.java:1168)
15:12:02,003 INFO  [stdout] (MSC service thread 1-6)    at org.hotswap.agent.plugin.elresolver.ELResolverPlugin.beanELResolverRegisterVariable(ELResolverPlugin.java:69)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at java.lang.reflect.Method.invoke(Method.java:483)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at org.hotswap.agent.annotation.handler.TransformHandler.transform(TransformHandler.java:162)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at org.hotswap.agent.annotation.handler.TransformHandler$1.transform(TransformHandler.java:73)
15:12:02,004 INFO  [stdout] (MSC service thread 1-6)    at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:129)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at java.lang.ClassLoader.defineClass1(Native Method)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:277)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:92)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.Module.loadModuleClass(Module.java:568)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
15:12:02,005 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at com.sun.faces.application.ApplicationAssociate.initializeELResolverChains(ApplicationAssociate.java:511)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at com.sun.faces.application.ApplicationImpl.performOneTimeELInitialization(ApplicationImpl.java:1324)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at com.sun.faces.application.ApplicationImpl.getELResolver(ApplicationImpl.java:481)
15:12:02,006 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.as.jsf.injection.weld.ForwardingApplication.getELResolver(ForwardingApplication.java:221)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:233)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:173)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:190)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:87)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:72)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
15:12:02,031 INFO  [stdout] (MSC service thread 1-6)    at java.lang.Thread.run(Thread.java:745)
15:12:02,032 INFO  [stdout] (MSC service thread 1-6) 
15:12:02,040 INFO  [stdout] (MSC service thread 1-6) HOTSWAP AGENT: 15:12:2.039 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.elresolver.ELResolverPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "javax.el.api:main" from local module loader @6b2fad11 (finder: local module finder @79698539 (roots: J:\java\servers\wildfly\modules,J:\java\servers\wildfly\modules\system\layers\base))'.

How to use with Lombok ?

In my eclipse.ini, I have this setting :

-javaagent:E:/eclipse/eclipse/lombok.jar
-Xbootclasspath/a:E:/eclipse/eclipse/lombok.jar

How to put HotswapAgent.jar in such a case ?

test failures in PluginManagerTest

While trying to build a release, I encountered some test failures.

[INFO] Running org.hotswap.agent.PluginManagerTest
[INFO] HOTSWAP AGENT: 10:28:11.227 INFO (org.hotswap.agent.PluginRegistry) - Discovered plugins: [org.hotswap.agent.testData.SimplePlugin]
[INFO] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.159 sec <<< FAILURE! - in org.hotswap.agent.PluginManagerTest
[INFO] testInit(org.hotswap.agent.PluginManagerTest)  Time elapsed: 0.041 sec  <<< ERROR!
[INFO] org.jmock.api.ExpectationError: unexpected invocation
[INFO]  at org.jmock.api.ExpectationError.unexpected(ExpectationError.java:23)
[INFO]  at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:85)
[INFO]  at org.jmock.Mockery.dispatch(Mockery.java:231)
[INFO]  at org.jmock.Mockery.access$100(Mockery.java:29)
[INFO]  at org.jmock.Mockery$MockObject.invoke(Mockery.java:271)
[INFO]  at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
[INFO]  at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
[INFO]  at org.jmock.internal.SingleThreadedPolicy$1.invoke(SingleThreadedPolicy.java:21)
[INFO]  at org.jmock.lib.legacy.ClassImposteriser$4.invoke(ClassImposteriser.java:129)
[INFO]  at org.hotswap.agent.annotation.handler.AnnotationProcessor$$EnhancerByCGLIB$$b45334fc.processAnnotations(<generated>)
[INFO]  at org.hotswap.agent.PluginRegistry.scanPlugins(PluginRegistry.java:97)
[INFO]  at org.hotswap.agent.PluginManager.init(PluginManager.java:109)
[INFO]  at org.hotswap.agent.PluginManagerTest.testInit(PluginManagerTest.java:46)

...

[INFO] Tests in error: 
[INFO]   PluginManagerTest.testInit:46 » Expectation unexpected invocation

Remove dependencies from parent pom

I think that parent POM should contain only dependencyManagement section where versions are defined. Then each module should use only groupId/artifactId in it's dependencies.

Rename annotations

I would like to make a recommendation to change the annotations to provide a consistent interface and to make their purposes more clear.

Here are some examples of some different names-- adjustments can be made to the names, but I believe this shows how they can be improved:

@OnClassLoaded = @Transform(define=true)
@OnClassUpdated = @Transform(define=false)
@OnClassFileUpdated = @watcher(filter = ".*.class")
@OnResouceFileUpdated = @watcher()

HotswapAgent tries to load resource files as classes

Hi, I tried to use HotswapAgent with my project,but I get a lot of errors like this:

HOTSWAP AGENT: 18:25:43.303 ERROR (org.hotswap.agent.annotation.handler.WatchEventCommand) - Unable create CtClass for URI 'file:///Users/mik01aj/code/myProject/someModule/src/main/java/com/example/website/presentation/basepage/dialogs/RegisterVerificationEmailDialog.html'.
java.io.IOException: bad magic number: 3c21444f
    at org.hotswap.agent.javassist.bytecode.ClassFile.read(ClassFile.java:759)
    at org.hotswap.agent.javassist.bytecode.ClassFile.<init>(ClassFile.java:117)
    at org.hotswap.agent.javassist.CtClassType.<init>(CtClassType.java:69)
    at org.hotswap.agent.javassist.ClassPool.makeClass(ClassPool.java:714)
    at org.hotswap.agent.javassist.ClassPool.makeClass(ClassPool.java:693)
    at org.hotswap.agent.annotation.handler.WatchEventCommand.createCtClass(WatchEventCommand.java:191)
    at org.hotswap.agent.annotation.handler.WatchEventCommand.onWatchEvent(WatchEventCommand.java:120)
    at org.hotswap.agent.annotation.handler.WatchEventCommand.executeCommand(WatchEventCommand.java:51)
    at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)

The given magic number 3c21444f is the hex for <!DO, the first 4 bytes of the HTML file. Basically, HotswapAgent tries to parse this file as Java bytecode, which, obviously, fails.

This might be because we keep our HTML templates (and some other non-Java resources, e.g. *.properties) in the src/main/java folder, and they go to WEB-INF/classes in the WAR file.

I think it's a HotswapAgent bug, because on original JDK it runs without problems.

If the fix is simple, you could point me to the place where this should be corrected so I could fix it myself and make a pull request.

Plugin class org.hotswap.agent.plugin.seam.SeamPlugin is not initialized in classloader ModuleClassLoader for Module "deployment.core-process.ear:main" from Service Module Loader

Hi! I'am using Jboss Eap 6.1, Seam 2.3.1 and Hot-Swap Agent 0.2, but i have this stacktrace:

21:43:22,580 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/]] (ServerService Thread Pool -- 69) JBWEB000287: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: org.jboss.seam.InstantiationException: Could not instantiate Seam component: org.jboss.seam.el.referenceCache
    at org.jboss.seam.Component.newInstance(Component.java:2208) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:343) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:317) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:143) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.init.Initialization.init(Initialization.java:813) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:36) [jboss-seam.jar:2.3.1.Final]
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
    at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:156) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
    at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:60) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
    at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:93) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_71]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_71]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_71]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.lang.RuntimeException: exception invoking: start
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.Component.callComponentMethod(Component.java:2313) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.Component.callCreateMethod(Component.java:2236) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.Component.newInstance(Component.java:2196) [jboss-seam.jar:2.3.1.Final]
    ... 16 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:114) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.el.JBossELReferenceCache_$$_javassist_seam_19.start(JBossELReferenceCache_$$_javassist_seam_19.java) [jboss-seam.jar:2.3.1.Final]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_71]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) [jboss-seam.jar:2.3.1.Final]
    ... 19 more
Caused by: java.lang.Error: java.lang.IllegalArgumentException: Plugin class org.hotswap.agent.plugin.seam.SeamPlugin is not initialized in classloader ModuleClassLoader for Module "deployment.core-process.ear:main" from Service Module Loader.
    at org.jboss.el.util.ReferenceCache.<init>(ReferenceCache.java:193) [jboss-el-1.0_02.CR6.jar:1.0_02.CR6]
    at org.jboss.el.util.ReferenceCache.<init>(ReferenceCache.java:184) [jboss-el-1.0_02.CR6.jar:1.0_02.CR6]
    at org.jboss.el.util.ReflectionUtil$1.<init>(ReflectionUtil.java:55) [jboss-el-1.0_02.CR6.jar:1.0_02.CR6]
    at org.jboss.el.util.ReflectionUtil.<clinit>(ReflectionUtil.java:55) [jboss-el-1.0_02.CR6.jar:1.0_02.CR6]
    at org.jboss.am.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.3.1.Final]
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196) [jboss-seam.jar:2.3.1.Final]
at org.jboss.seam.seam.el.JBossELReferenceCache.start(JBossELReferenceCache.java:18) [jboss-seam.jar:2.3.1.Final]
    ... 40 more
Caused by: java.lang.IllegalArgumentException: Plugin class org.hotswap.agent.plugin.seam.SeamPlugin is not initialized in classloader ModuleClassLoader for Module "deployment.core-process.ear:main" from Service Module Loader.
    at org.hotswap.agent.config.PluginRegistry.getPlugin(PluginRegistry.java:195) [hotswap-agent.jar:0.2]
    at org.hotswap.agent.config.PluginManager.getPlugin(PluginManager.java:79) [hotswap-agent.jar:0.2]
    at org.hotswap.agent.config.PluginManager.getPlugin(PluginManager.java:64) [hotswap-agent.jar:0.2]
    ... 45 more

Can you help with it?

HotSwap with DCEVM configured, started but not reloading changes during app execution ( Maven +JFX )

I'm using Netbeans 8 to write sample application based on Maven and Java FX. I want to set up HotSwap with DCEVM and check if it's working with my project.

Sample application
public class FXMLController implements Initializable {

@FXML
private Label label;

@FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");        
}

@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}    

}
I've installed and configured DCEVM and HotSwap agent.This is my running configuration:

runfx.args=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -jar "${project.build.directory}/${project.build.finalName}.jar"
jpda.listen=true
Env.MAVEN_OPTS=-XXaltjvm=dcevm -javaagent:c:\TEST\hotswap-agent.jar=autoHotswap=true
I've also cliked "Compile on save" option in netbeans.

This is log from console during app start.

NetBeans: JPDA Listening Start...
JPDA Address: MC0WKJ3C:50469
Port:50469
cd C:\dev\java\MavenFxHotSwap; "MAVEN_OPTS=-XXaltjvm=dcevm -javaagent:c:\TEST\hotswap-agent.jar=autoHotswap=true" JAVA_HOME=C:\TEST\Java\jdk1.8.0_05 cmd /c """C:\Program Files\NetBeans 8.0.2\java\maven\bin\mvn.bat" -Drunfx.args="-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=50469 -jar \"${project.build.directory}/${project.build.finalName}.jar\" " -Djpda.listen=true -Djpda.address=50469 -Dmaven.ext.class.path="C:\Program Files\NetBeans 8.0.2\java\maven-nblib\netbeans-eventspy.jar" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
HOTSWAP AGENT: 11:43:17.728 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {0.2} - unlimited runtime class redefinition.
HOTSWAP AGENT: 11:43:18.085 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'sun.misc.Launcher$AppClassLoader@58644d46'.
HOTSWAP AGENT: 11:43:18.124 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat, ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox]
HOTSWAP AGENT: 11:43:19.472 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'ClassRealm[plexus.core, parent: null]'.
Scanning for projects...


Building MavenFxHotSwap 1.0-SNAPSHOT

HOTSWAP AGENT: 11:43:20.164 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]'.

--- exec-maven-plugin:1.2.1:exec (default-cli) @ MavenFxHotSwap ---
HOTSWAP AGENT: 11:43:21.068 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]'.
HOTSWAP AGENT: 11:43:21.563 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'ClassRealm[plugin>org.codehaus.mojo:exec-maven-plugin:1.2.1, parent: sun.misc.Launcher$AppClassLoader@58644d46]'.
When I'm debuging code and making some changes adding method or something no changes are made. I can apply changes via netbeasn interface but no log from HotswapperPlugin is visible. Is there is any way to make it work? Am I doing something wrong?

Spring plugin - ProxyReplacer dependency

PluginClass must not contain dependencies to any framework specific classes. If launched in multiple classloader envorinment (servlet container), an error occures:
java.lang.NoClassDefFoundError: net/sf/cglib/proxy/Callback

Framework specific code should be run:

  • using java reflection with correct classloader
  • or via invocation from modified class inside application classloader.

See http://www.hotswapagent.org/how-does-it-work/hotswap-agent-implementation for more information.

There is example project for plain servlet and with spring and hibernate.

WHen using hibernate 3 An error message appears on startup

It would be great if a warning message appear instead of error and start up the application as normal

HOTSWAP AGENT: 16:57:26.997 ERROR (org.hotswap.agent.annotation.handler.OnClassLoadedHandler) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.hibernate.HibernatePlugin' class 'org/hibernate/cfg/Configuration'.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)

java.lang.reflect.GenericSignatureFormatError after class reload

Hi,
There are cases (which I can't define completely) in which after reloading a class and trying to use it, a java.lang.reflect.GenericSignatureFormatError exception occurs.
Reloading the application obviously fixes the issue, but what's more is that the class is reload-able and usable.

I'm using HotswapAgent 0.4, tomcat-7.0.54, jdk1.7.0_51

HOTSWAP AGENT: 21:31:22.432 RELOAD (org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent) - Registering Spring bean 'freeMarkerRestController'
2014-07-30 21:31:39,273 WARN net.sf.ehcache.constructs.web.filter.Filter: - Throwable thrown during doFilter on request with URI: /structures-webapp/rest/freeMarker/previewTemplate/693/9332 and Query: nullHandler processing failed; nested exception is java.lang.reflect.GenericSignatureFormatError
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.reflect.GenericSignatureFormatError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.structures.shared.web.AjaxCallsFilter.doFilter(AjaxCallsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:95)
at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.structures.shared.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.structures.shared.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.structures.shared.web.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.shared.authentication.ApplicationBlockerFilter.doFilter(ApplicationBlockerFilter.java:71)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.modelity.shared.authentication.HttpsCookieFilter.doFilter(HttpsCookieFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.reflect.GenericSignatureFormatError
at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:126)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:299)
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:285)
at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:487)
at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:190)
at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:387)
at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:200)
at sun.reflect.annotation.AnnotationParser.parseParameterAnnotations2(AnnotationParser.java:152)
at sun.reflect.annotation.AnnotationParser.parseParameterAnnotations(AnnotationParser.java:129)
at java.lang.reflect.Method.getParameterAnnotations(Method.java:772)
at org.springframework.core.MethodParameter.getParameterAnnotations(MethodParameter.java:283)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:257)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
... 84 more
(-1 / -1) (org/hotswap/agent/plugin/jvm/AnonymousClassInfos$AnonymousClassInfoMatcher/org/hotswap/agent/plugin/jvm/AnonymousClassInfos$AnonymousClassInfoMatcher)
{instance class}

  • klass: {other class}
    {instance class}
  • klass: {other class}

Glassfish support

Glassfish is based on OSGI.

Currently it does not start at all - error java.lang.NoClassDefFoundError: org/hotswap/agent/PluginManager. This is because of OSGI bundle mechanism, where parent classloader delegation does not work. Look at https://github.com/HotswapProjects/HotswapAgent/blob/master/hotswap-agent-core/src/main/java/org/hotswap/agent/HotswapAgent.java fixJboss7Modules(), this is similar fix for JBoss. On Glassfish, you need to set "org.osgi.framework.bootdelegation" property (see https://blogs.oracle.com/swchan/entry/profiling_glassfish_3_with_jprofiler), but I was unable to do it from HotswapAgent.

Support for hotswap-agent.properties needs to be developed (similar to JettyPlugin, TomcatPlugin).

Test with https://github.com/HotswapProjects/HotswapAgentExamples/blob/master/plain-servlet/run-tests.sh , uncomment Glassfish section.

Use com.sun.nio.file.SensitivityWatchEventModifier to speed up file change event on Mac

Currently, it may take several seconds for the file change event to be fired after a file is changed on Mac.

Improvement:
http://stackoverflow.com/questions/9588737/is-java-7-watchservice-slow-for-anyone-else
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/com/sun/nio/file/SensitivityWatchEventModifier.java

This code is taken from Agent7:

  Modifier get_com_sun_nio_file_SensitivityWatchEventModifier_HIGH() {
    try {
      Class<?> c = Class.forName("com.sun.nio.file.SensitivityWatchEventModifier");
      Field    f = c.getField("HIGH");
      return (Modifier) f.get(c);
    } catch (Exception e) {
      return null;
    }
  }

  void register(Path dir) throws IOException {
    Modifier high = get_com_sun_nio_file_SensitivityWatchEventModifier_HIGH();
    WatchKey key =
      (high == null) ?
      dir.register(watcher, ENTRY_CREATE, ENTRY_MODIFY) :
      dir.register(watcher, new WatchEvent.Kind<?>[]{ENTRY_CREATE, ENTRY_MODIFY}, high);
    keys.put(key, dir);
  }

AddEnhancerMethodProxyTest fails on jdk1.8.0_05

"C:\Program Files\Java\jdk1.8.0_05\jre\bin\java" -ea -XXaltjvm=dcevm -javaagent:j:\HotswapAgent\hotswap-agent-core\target\hotswap-agent-core-0.2.1-SNAPSHOT.jar  ... org.hotswap.agent.plugin.proxy.test.methods.AddEnhancerMethodProxyTest

HOTSWAP AGENT: 21:45:40.085 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {0.2.1-SNAPSHOT} - unlimited runtime class redefinition.
HOTSWAP AGENT: 21:45:40.825 ERROR (org.hotswap.agent.plugin.proxy.cglib.CglibProxyTransformer) - main
HOTSWAP AGENT: 21:45:40.826 ERROR (org.hotswap.agent.plugin.proxy.cglib.CglibProxyTransformer) - main
HOTSWAP AGENT: 21:45:40.827 ERROR (org.hotswap.agent.plugin.proxy.cglib.CglibProxyTransformer) - main

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000000721900d, pid=14836, tid=2184
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)
# Java VM: Dynamic Code Evolution 64-Bit Server VM (25.5-b02-dcevmlight-36 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0xc900d]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   https://github.com/Guidewire/DCEVM/issues
#

---------------  T H R E A D  ---------------

Current thread (0x000000000266d800):  VMThread [stack: 0x0000000004150000,0x0000000004250000] [id=2184]

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000010

Registers:
RAX=0x00000000000000ff, RBX=0x0000000000000f00, RCX=0x0000000000000000, RDX=0x0000000000000000
RSP=0x000000000424f270, RBP=0x000000000424f3a0, RSI=0x0000000000000f00, RDI=0x0000000003e5dde0
R8 =0x00000000025fd440, R9 =0x0000000000000003, R10=0x0000000000000003, R11=0x0000000003e5df71
R12=0x000000000424f430, R13=0x000000000424f420, R14=0x0000000000000000, R15=0x0000000000000000
RIP=0x000000000721900d, EFLAGS=0x0000000000010202

Top of Stack: (sp=0x000000000424f270)
0x000000000424f270:   00000000000000b7 000000000424f3a0
0x000000000424f280:   00000000000000b7 0000000002580080
0x000000000424f290:   0000000000000000 00000000072f85b0
0x000000000424f2a0:   0000000000000000 00000000000000b7
0x000000000424f2b0:   0000000000000000 0000000002580080
0x000000000424f2c0:   000000000257c200 0000000002580270
0x000000000424f2d0:   00000000025804a0 0000000000000000
0x000000000424f2e0:   0000000000000030 0000000002570000
0x000000000424f2f0:   0000000000000028 0000000000000028
0x000000000424f300:   0000000077975430 0000000000000000
0x000000000424f310:   0000000000000010 0000000002570000
0x000000000424f320:   0000000000000008 0000000000000008
0x000000000424f330:   0000000002570288 00000000778b3448
0x000000000424f340:   0000000000000000 0000000000000008
0x000000000424f350:   0000079f00250017 0000000002580470
0x000000000424f360:   000000000424f7e8 0000000064c15695 

Instructions: (pc=0x000000000721900d)
0x0000000007218fed:   0f b7 d8 48 63 c3 0f b7 44 c7 50 48 8b 44 c7 50
0x0000000007218ffd:   48 89 44 24 30 f6 d0 48 8b 4c 24 30 a8 01 74 0f
0x000000000721900d:   48 8b 41 10 48 8b 5c 24 38 48 83 c4 20 5f c3 48
0x000000000721901d:   8b 5c 24 38 48 83 e1 fe 48 8b c1 48 83 c4 20 5f 


Register to memory mapping:

RAX=0x00000000000000ff is an unknown value
RBX=0x0000000000000f00 is an unknown value
RCX=0x0000000000000000 is an unknown value
RDX=0x0000000000000000 is an unknown value
RSP=0x000000000424f270 is an unknown value
RBP=0x000000000424f3a0 is an unknown value
RSI=0x0000000000000f00 is an unknown value
RDI=0x0000000003e5dde0 is an unknown value
R8 =0x00000000025fd440 is an unknown value
R9 =0x0000000000000003 is an unknown value
R10=0x0000000000000003 is an unknown value
R11=0x0000000003e5df71 is an unknown value
R12=0x000000000424f430 is an unknown value
R13=0x000000000424f420 is an unknown value
R14=0x0000000000000000 is an unknown value
R15=0x0000000000000000 is an unknown value


Stack: [0x0000000004150000,0x0000000004250000],  sp=0x000000000424f270,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0xc900d]
V  [jvm.dll+0x1a85b0]
V  [jvm.dll+0x1a9502]
V  [jvm.dll+0x19b9f5]
V  [jvm.dll+0x1a08df]
V  [jvm.dll+0x1a126a]
V  [jvm.dll+0x2140f7]
V  [jvm.dll+0x213352]
V  [jvm.dll+0x2137d1]
V  [jvm.dll+0x2139ee]
V  [jvm.dll+0x25f82a]
C  [msvcr100.dll+0x21d9f]
C  [msvcr100.dll+0x21e3b]
C  [kernel32.dll+0x159ed]
C  [ntdll.dll+0x2c541]

VM_Operation (0x00000000027ddb00): RedefineClasses, mode: safepoint, requested by thread 0x00000000025e8800


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x0000000005db9800 JavaThread "Thread-3" [_thread_blocked, id=11292, stack(0x00000000064b0000,0x00000000065b0000)]
  0x0000000005a5a000 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=2444, stack(0x0000000006300000,0x0000000006400000)]
  0x0000000004932000 JavaThread "Service Thread" daemon [_thread_blocked, id=17380, stack(0x0000000005950000,0x0000000005a50000)]
  0x000000000495c000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=16744, stack(0x0000000005790000,0x0000000005890000)]
  0x000000000495b000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=16256, stack(0x00000000055c0000,0x00000000056c0000)]
  0x000000000495a800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=15796, stack(0x0000000005380000,0x0000000005480000)]
  0x000000000481d800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=14140, stack(0x00000000050f0000,0x00000000051f0000)]
  0x0000000004817800 JavaThread "Thread-2" daemon [_thread_blocked, id=11244, stack(0x0000000004f70000,0x0000000005070000)]
  0x0000000004816800 JavaThread "Thread-1" daemon [_thread_blocked, id=13700, stack(0x0000000004da0000,0x0000000004ea0000)]
  0x00000000047f8000 JavaThread "Thread-0" daemon [_thread_in_native, id=13928, stack(0x0000000004bf0000,0x0000000004cf0000)]
  0x00000000040a1000 JavaThread "Attach Listener" daemon [_thread_blocked, id=6452, stack(0x0000000004570000,0x0000000004670000)]
  0x000000000409d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=14800, stack(0x00000000046c0000,0x00000000047c0000)]
  0x000000000267e000 JavaThread "Finalizer" daemon [_thread_blocked, id=1392, stack(0x0000000004300000,0x0000000004400000)]
  0x0000000002674800 JavaThread "Reference Handler" daemon [_thread_blocked, id=9420, stack(0x0000000004400000,0x0000000004500000)]
  0x00000000025e8800 JavaThread "main" [_thread_blocked, id=2996, stack(0x00000000026e0000,0x00000000027e0000)]

Other Threads:
=>0x000000000266d800 VMThread [stack: 0x0000000004150000,0x0000000004250000] [id=2184]
  0x00000000048ec800 WatcherThread [stack: 0x0000000005250000,0x0000000005350000] [id=8844]

VM state:at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x000000000257e6a0] Threads_lock - owner thread: 0x000000000266d800
[0x000000000257eba0] Heap_lock - owner thread: 0x00000000025e8800

Heap:
 def new generation   total 1152K, used 189K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   6% used [0x0000000081a00000, 0x0000000081a0fc80, 0x0000000081b00000)
  from space 128K,  98% used [0x0000000081b20000, 0x0000000081b3fa90, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 3339K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abf42cb0, 0x00000000abf42e00, 0x00000000b3ac0000)
 Metaspace       used 8347K, capacity 8494K, committed 8704K, reserved 1056768K
  class space    used 959K, capacity 1019K, committed 1024K, reserved 1048576K

Card table byte_map: [0x0000000003070000,0x0000000003470000] byte_map_base: 0x0000000002c63000

Polling page: 0x0000000000130000

CodeCache: size=245760Kb used=2685Kb max_used=2687Kb free=243074Kb
 bounds [0x000000000f010000, 0x000000000f2c0000, 0x000000001e010000]
 total_blobs=976 nmethods=646 adapters=244
 compilation: enabled

Compilation events (10 events):
Event: 0.887 Thread 0x000000000495c000  641       1       java.nio.Buffer::limit (5 bytes)
Event: 0.887 Thread 0x000000000495c000 nmethod 641 0x000000000f2add50 code [0x000000000f2adea0, 0x000000000f2adfb0]
Event: 0.887 Thread 0x000000000495c000  643       3       java.nio.CharBuffer::arrayOffset (35 bytes)
Event: 0.888 Thread 0x000000000495c000 nmethod 643 0x000000000f2ad790 code [0x000000000f2ad920, 0x000000000f2adc18]
Event: 0.888 Thread 0x000000000495c000  644       3       java.io.BufferedOutputStream::flushBuffer (29 bytes)
Event: 0.888 Thread 0x000000000495c000 nmethod 644 0x000000000f2ad310 code [0x000000000f2ad480, 0x000000000f2ad6e8]
Event: 0.888 Thread 0x000000000495c000  645       3       java.io.OutputStream::flush (1 bytes)
Event: 0.888 Thread 0x000000000495c000 nmethod 645 0x000000000f2ad010 code [0x000000000f2ad160, 0x000000000f2ad2b0]
Event: 0.888 Thread 0x000000000495c000  646   !   3       java.io.PrintStream::flush (35 bytes)
Event: 0.889 Thread 0x000000000495c000 nmethod 646 0x000000000f2ac690 code [0x000000000f2ac820, 0x000000000f2acd78]

GC Heap History (10 events):
Event: 0.816 GC heap before
{Heap before GC invocations=22 (full 0):
 def new generation   total 1152K, used 1152K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K, 100% used [0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000)
  from space 128K, 100% used [0x0000000081b00000, 0x0000000081b20000, 0x0000000081b20000)
  to   space 128K,   0% used [0x0000000081b20000, 0x0000000081b20000, 0x0000000081b40000)
 tenured generation   total 129792K, used 2447K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   1% used [0x00000000abc00000, 0x00000000abe63d10, 0x00000000abe63e00, 0x00000000b3ac0000)
 Metaspace       used 7931K, capacity 8046K, committed 8192K, reserved 1056768K
  class space    used 905K, capacity 955K, committed 1024K, reserved 1048576K
Event: 0.817 GC heap after
Heap after GC invocations=23 (full 0):
 def new generation   total 1152K, used 127K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   0% used [0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b20000, 0x0000000081b3fff8, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 2639K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abe93f10, 0x00000000abe94000, 0x00000000b3ac0000)
 Metaspace       used 7931K, capacity 8046K, committed 8192K, reserved 1056768K
  class space    used 905K, capacity 955K, committed 1024K, reserved 1048576K
}
Event: 0.827 GC heap before
{Heap before GC invocations=23 (full 0):
 def new generation   total 1152K, used 1151K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K, 100% used [0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b20000, 0x0000000081b3fff8, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 2639K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abe93f10, 0x00000000abe94000, 0x00000000b3ac0000)
 Metaspace       used 7991K, capacity 8110K, committed 8192K, reserved 1056768K
  class space    used 914K, capacity 955K, committed 1024K, reserved 1048576K
Event: 0.828 GC heap after
Heap after GC invocations=24 (full 0):
 def new generation   total 1152K, used 128K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   0% used [0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000)
  from space 128K, 100% used [0x0000000081b00000, 0x0000000081b20000, 0x0000000081b20000)
  to   space 128K,   0% used [0x0000000081b20000, 0x0000000081b20000, 0x0000000081b40000)
 tenured generation   total 129792K, used 2859K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abecafa0, 0x00000000abecb000, 0x00000000b3ac0000)
 Metaspace       used 7991K, capacity 8110K, committed 8192K, reserved 1056768K
  class space    used 914K, capacity 955K, committed 1024K, reserved 1048576K
}
Event: 0.841 GC heap before
{Heap before GC invocations=24 (full 0):
 def new generation   total 1152K, used 1152K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K, 100% used [0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000)
  from space 128K, 100% used [0x0000000081b00000, 0x0000000081b20000, 0x0000000081b20000)
  to   space 128K,   0% used [0x0000000081b20000, 0x0000000081b20000, 0x0000000081b40000)
 tenured generation   total 129792K, used 2859K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abecafa0, 0x00000000abecb000, 0x00000000b3ac0000)
 Metaspace       used 8066K, capacity 8206K, committed 8448K, reserved 1056768K
  class space    used 923K, capacity 987K, committed 1024K, reserved 1048576K
Event: 0.842 GC heap after
Heap after GC invocations=25 (full 0):
 def new generation   total 1152K, used 127K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   0% used [0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b20000, 0x0000000081b3fff8, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 3064K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abefe170, 0x00000000abefe200, 0x00000000b3ac0000)
 Metaspace       used 8066K, capacity 8206K, committed 8448K, reserved 1056768K
  class space    used 923K, capacity 987K, committed 1024K, reserved 1048576K
}
Event: 0.863 GC heap before
{Heap before GC invocations=25 (full 0):
 def new generation   total 1152K, used 1151K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K, 100% used [0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b20000, 0x0000000081b3fff8, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 3064K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abefe170, 0x00000000abefe200, 0x00000000b3ac0000)
 Metaspace       used 8173K, capacity 8334K, committed 8448K, reserved 1056768K
  class space    used 937K, capacity 987K, committed 1024K, reserved 1048576K
Event: 0.864 GC heap after
Heap after GC invocations=26 (full 0):
 def new generation   total 1152K, used 127K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   0% used [0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b00000, 0x0000000081b1fff8, 0x0000000081b20000)
  to   space 128K,   0% used [0x0000000081b20000, 0x0000000081b20000, 0x0000000081b40000)
 tenured generation   total 129792K, used 3238K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abf29a68, 0x00000000abf29c00, 0x00000000b3ac0000)
 Metaspace       used 8173K, capacity 8334K, committed 8448K, reserved 1056768K
  class space    used 937K, capacity 987K, committed 1024K, reserved 1048576K
}
Event: 0.890 GC heap before
{Heap before GC invocations=26 (full 0):
 def new generation   total 1152K, used 1151K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K, 100% used [0x0000000081a00000, 0x0000000081b00000, 0x0000000081b00000)
  from space 128K,  99% used [0x0000000081b00000, 0x0000000081b1fff8, 0x0000000081b20000)
  to   space 128K,   0% used [0x0000000081b20000, 0x0000000081b20000, 0x0000000081b40000)
 tenured generation   total 129792K, used 3238K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abf29a68, 0x00000000abf29c00, 0x00000000b3ac0000)
 Metaspace       used 8331K, capacity 8494K, committed 8704K, reserved 1056768K
  class space    used 957K, capacity 1019K, committed 1024K, reserved 1048576K
Event: 0.891 GC heap after
Heap after GC invocations=27 (full 0):
 def new generation   total 1152K, used 126K [0x0000000081a00000, 0x0000000081b40000, 0x00000000abc00000)
  eden space 1024K,   0% used [0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000)
  from space 128K,  98% used [0x0000000081b20000, 0x0000000081b3fa90, 0x0000000081b40000)
  to   space 128K,   0% used [0x0000000081b00000, 0x0000000081b00000, 0x0000000081b20000)
 tenured generation   total 129792K, used 3339K [0x00000000abc00000, 0x00000000b3ac0000, 0x0000000100000000)
   the space 129792K,   2% used [0x00000000abc00000, 0x00000000abf42cb0, 0x00000000abf42e00, 0x00000000b3ac0000)
 Metaspace       used 8331K, capacity 8494K, committed 8704K, reserved 1056768K
  class space    used 957K, capacity 1019K, committed 1024K, reserved 1048576K
}

Deoptimization events (10 events):
Event: 0.646 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f13a0dc method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 18
Event: 0.647 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f13a0dc method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 18
Event: 0.647 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f13a0dc method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 18
Event: 0.647 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f13a0dc method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 18
Event: 0.709 Thread 0x00000000025e8800 Uncommon trap: reason=unreached action=reinterpret pc=0x000000000f19fd94 method=sun.misc.URLClassPath$JarLoader.ensureOpen()V @ 4
Event: 0.771 Thread 0x00000000025e8800 Uncommon trap: reason=unloaded action=reinterpret pc=0x000000000f20cbfc method=org.hotswap.agent.javassist.bytecode.ConstPool.readOne(Ljava/io/DataInputStream;)I @ 124
Event: 0.831 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f218278 method=java.util.regex.Pattern$Curly.match0(Ljava/util/regex/Matcher;IILjava/lang/CharSequence;)Z @ 77
Event: 0.843 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f218278 method=java.util.regex.Pattern$Curly.match0(Ljava/util/regex/Matcher;IILjava/lang/CharSequence;)Z @ 77
Event: 0.844 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f218278 method=java.util.regex.Pattern$Curly.match0(Ljava/util/regex/Matcher;IILjava/lang/CharSequence;)Z @ 77
Event: 0.845 Thread 0x00000000025e8800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000f218278 method=java.util.regex.Pattern$Curly.match0(Ljava/util/regex/Matcher;IILjava/lang/CharSequence;)Z @ 77

Internal exceptions (10 events):
Event: 0.881 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081a9cae0) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.883 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081aaf9c0) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.884 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081ab5348) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.884 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081abbd88) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.885 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081ac4f58) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.886 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081aca150) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.888 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081af6628) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.889 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081afad80) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.890 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081aff4d0) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]
Event: 0.891 Thread 0x00000000025e8800 Exception <a 'java/security/PrivilegedActionException'> (0x0000000081a047a8) thrown at [C:\Jenkins\workspace\DCEVM-light-8u05\jdk\JDK1.8.0_05-x64\k\product\oops\compressed\slave\dcevm-win\hotspot\src\share\vm\prims\jvm.cpp, line 1249]

Events (10 events):
Event: 0.889 loading class org/hotswap/agent/plugin/proxy/TransformationState
Event: 0.889 loading class org/hotswap/agent/plugin/proxy/TransformationState done
Event: 0.890 loading class org/hotswap/agent/plugin/proxy/signature/JavaClassSignature
Event: 0.890 loading class org/hotswap/agent/plugin/proxy/signature/JavaClassSignature done
Event: 0.890 Executing VM operation: GenCollectForAllocation
Event: 0.891 Executing VM operation: GenCollectForAllocation done
Event: 0.891 loading class org/hotswap/agent/plugin/proxy/cglib/CglibProxyTransformer$1
Event: 0.891 loading class org/hotswap/agent/plugin/proxy/cglib/CglibProxyTransformer$1 done
Event: 0.892 Thread 0x0000000005db9800 Thread added: 0x0000000005db9800
Event: 0.892 Executing VM operation: RedefineClasses


Dynamic libraries:
0x000000013f450000 - 0x000000013f484000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\java.exe
0x0000000077860000 - 0x0000000077a09000     C:\Windows\SYSTEM32\ntdll.dll
0x0000000077740000 - 0x000000007785f000     C:\Windows\system32\kernel32.dll
0x000007fefd9d0000 - 0x000007fefda3c000     C:\Windows\system32\KERNELBASE.dll
0x000007feff620000 - 0x000007feff6fb000     C:\Windows\system32\ADVAPI32.dll
0x000007feff3a0000 - 0x000007feff43f000     C:\Windows\system32\msvcrt.dll
0x000007fefe1d0000 - 0x000007fefe1ef000     C:\Windows\SYSTEM32\sechost.dll
0x000007fefddb0000 - 0x000007fefdedd000     C:\Windows\system32\RPCRT4.dll
0x0000000077640000 - 0x000000007773a000     C:\Windows\system32\USER32.dll
0x000007fefe1f0000 - 0x000007fefe257000     C:\Windows\system32\GDI32.dll
0x000007fefdcf0000 - 0x000007fefdcfe000     C:\Windows\system32\LPK.dll
0x000007feff170000 - 0x000007feff239000     C:\Windows\system32\USP10.dll
0x000007fefbfe0000 - 0x000007fefc1d4000     C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\COMCTL32.dll
0x000007feff320000 - 0x000007feff391000     C:\Windows\system32\SHLWAPI.dll
0x000007feffb40000 - 0x000007feffb6e000     C:\Windows\system32\IMM32.DLL
0x000007fefe260000 - 0x000007fefe369000     C:\Windows\system32\MSCTF.dll
0x000007fefd5d0000 - 0x000007fefd60f000     C:\Windows\system32\nvinitx.dll
0x000000000f000000 - 0x000000000f006000     C:\Program Files\NVIDIA Corporation\CoProcManager\_etoured.dll
0x000007fefa880000 - 0x000007fefa8c5000     C:\Program Files\NVIDIA Corporation\CoProcManager\nvd3d9wrapx.dll
0x000007feff440000 - 0x000007feff617000     C:\Windows\system32\SETUPAPI.dll
0x000007fefd8f0000 - 0x000007fefd926000     C:\Windows\system32\CFGMGR32.dll
0x000007fefdee0000 - 0x000007fefdfb7000     C:\Windows\system32\OLEAUT32.dll
0x000007fefdfc0000 - 0x000007fefe1c3000     C:\Windows\system32\ole32.dll
0x000007fefd9b0000 - 0x000007fefd9ca000     C:\Windows\system32\DEVOBJ.dll
0x000007fefa730000 - 0x000007fefa772000     C:\Program Files\NVIDIA Corporation\CoProcManager\nvdxgiwrapx.dll
0x0000000064bf0000 - 0x0000000064cc2000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\msvcr100.dll
0x0000000007150000 - 0x0000000007945000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\dcevm\jvm.dll
0x000007fef9370000 - 0x000007fef9379000     C:\Windows\system32\WSOCK32.dll
0x000007fefe390000 - 0x000007fefe3dd000     C:\Windows\system32\WS2_32.dll
0x000007fefdda0000 - 0x000007fefdda8000     C:\Windows\system32\NSI.dll
0x000007fefb430000 - 0x000007fefb46b000     C:\Windows\system32\WINMM.dll
0x0000000077a30000 - 0x0000000077a37000     C:\Windows\system32\PSAPI.DLL
0x000000006b820000 - 0x000000006b82f000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\verify.dll
0x000000006b7f0000 - 0x000000006b818000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\java.dll
0x000000006d740000 - 0x000000006d763000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\instrument.dll
0x000000006b7d0000 - 0x000000006b7e6000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\zip.dll
0x000007fefe3e0000 - 0x000007feff168000     C:\Windows\system32\SHELL32.dll
0x000007fefd6a0000 - 0x000007fefd6af000     C:\Windows\system32\profapi.dll
0x000000006b7b0000 - 0x000000006b7ca000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\net.dll
0x000007fefce40000 - 0x000007fefce95000     C:\Windows\system32\mswsock.dll
0x000007fefce30000 - 0x000007fefce37000     C:\Windows\System32\wship6.dll
0x000000006b5a0000 - 0x000000006b5b1000     C:\Program Files\Java\jdk1.8.0_05\jre\bin\nio.dll
0x000007fefaf70000 - 0x000007fefaf80000     C:\Program Files (x86)\JetBrains\IntelliJ IDEA 139.144.2\bin\breakgen64.dll
0x000007fef51e0000 - 0x000007fef5305000     C:\Windows\system32\dbghelp.dll

VM Arguments:
jvm_args: -ea -javaagent:j:\HotswapAgent\hotswap-agent-core\target\hotswap-agent-core-0.2.1-SNAPSHOT.jar -Didea.launcher.port=7532 -Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 139.144.2\bin -Dfile.encoding=UTF-8 
java_command: com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 org.hotswap.agent.plugin.proxy.test.methods.AddEnhancerMethodProxyTest
java_class_path (initial): C:\Program Files (x86)\JetBrains\IntelliJ IDEA 139.144.2\lib\idea_rt.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 139.144.2\plugins\junit\lib\junit-rt.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\zipfs.jar;J:\HotswapAgent\plugin\hotswap-agent-proxy-plugin\target\test-classes;J:\HotswapAgent\plugin\hotswap-agent-proxy-plugin\target\classes;J:\HotswapAgent\hotswap-agent-core\target\classes;C:\Users\bubnik\.m2\repository\asm\asm-all\3.3.1\asm-all-3.3.1.jar;C:\Users\bubnik\.m2\repository\org\springframework\spring-core\4.0.5.RELEASE\spring-core-4.0.5.RELEASE.jar;C:\Users\bubnik\.m2\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;C:\Users\bubnik\.m2\repository\org\springframework\spring
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=c:\java\OpenJDK\jdk1.7.0_45
PATH=C:\ProgramData\Oracle\Java\javapath;c:\java\OpenJDK\jdk1.7.0_45\bin;C:\Program Files (x86)\Microsoft DirectX SDK (April 2006)\Utilities\Bin\x86;c:\apache-maven-3.0.4\bin\;C:\Program Files\Mercurial;C:\app\bubnik\product\11.2.0\client_3\bin;C:\Python33\;C:\oraclexe\app\oracle\product\11.2.0\server\bin;c:\app\bubnik\product\11.2.0\client_1\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\DLLShared\;C:\Program Files (x86)\Roxio\OEM\AudioCore\;C:\Program Files\TortoiseSVN\bin;C:/Users/bubnik/AppData/Local/GitHub/PortableGit_8810fd5c2c79c73adcc73fd0825f3b32fdb816e7/bin;C:\Program Files (x86)\Bitvise SSH Client;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Git\bin;C:\Program Files\Calibre2\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Google\Google Apps Sync\;C:\Program Files (x86)\Google\Google Apps Migration\;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\Program Files\TortoiseHg\;C:\Program Files\TortoiseGit\bin;C:\Python33\
USERNAME=bubnik
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 7 , 64 bit Build 7601 Service Pack 1

CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, ht, tsc, tscinvbit

Memory: 4k page, physical 8280236k(1181480k free), swap 16558608k(4175348k free)

vm_info: Dynamic Code Evolution 64-Bit Server VM (25.5-b02-dcevmlight-36) for windows-amd64 JRE (1.8.0), built on Apr 28 2014 18:38:12 by "" with MS VC++ 10.0 (VS2010)

time: Sun Nov 09 21:45:40 2014
elapsed time: 0 seconds

Integration test example

Developing plugin is a pain right now, as I have to build the agent, restart application server, deploy application.

It would be great to have an example showing how to utilize JUnit, even if we'd have to run each test separately.

Invalid URI format on start of the application

I am using embedded tomcat run from main method and set the logback configuration file as follows:

System.setProperty("logback.configurationFile", "file:./src/test/resources/logback.xml");

When the application starts it outputs:

HOTSWAP AGENT: 19:14:11.960 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent - unlimited runtime class redefinition.
HOTSWAP AGENT: 19:14:12.361 INFO (org.hotswap.agent.PluginRegistry) - Discovered plugins: [org.hotswap.agent.plugin.hotswapper.HotswapperPlugin, org.hotswap.agent.plugin.jvm.AnonymousClassPatchPlugin, org.hotswap.agent.plugin.hibernate.HibernatePlugin, org.hotswap.agent.plugin.spring.SpringPlugin, org.hotswap.agent.plugin.jetty.JettyPlugin, org.hotswap.agent.plugin.tomcat.TomcatPlugin, org.hotswap.agent.plugin.zk.ZkPlugin, org.hotswap.agent.plugin.logback.LogbackPlugin]
HOTSWAP AGENT: 19:14:13.324 INFO (org.hotswap.agent.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.logback.LogbackPlugin' initialized in ClassLoader 'sun.misc.Launcher$AppClassLoader@3a7f1228'.
HOTSWAP AGENT: 19:14:13.329 ERROR (org.hotswap.agent.watch.nio.WatcherNIO2) - Unable to watch path with prefix 'file:./src/test/resources/logback.xml' for changes.
java.io.IOException: Invalid URI format file:./src/test/resources/logback.xml
at org.hotswap.agent.watch.nio.WatcherNIO2.addDirectory(WatcherNIO2.java:111)
at org.hotswap.agent.watch.nio.WatcherNIO2.addEventListener(WatcherNIO2.java:55)
at org.hotswap.agent.plugin.logback.LogbackPlugin.initLogback(LogbackPlugin.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:72)
at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:55)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:279)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:252)
at cz.nisizs.test.StartTomcat.main(StartTomcat.java:17)
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at sun.nio.fs.WindowsUriSupport.fromUri(WindowsUriSupport.java:122)
at sun.nio.fs.WindowsFileSystemProvider.getPath(WindowsFileSystemProvider.java:92)
at java.nio.file.Paths.get(Paths.java:138)
at org.hotswap.agent.watch.nio.WatcherNIO2.addDirectory(WatcherNIO2.java:104)
... 16 more

extraClasspath, watchResources and autoHotswap should be handled by agent core

Basic hotswap properties are now supported by tomcat/jetty plugin (Tomcat/Jetty classloader bytecode enhanecements). This is not robust enough and should be supported on JVM level without any framework or other preconditions.

New approach is to modify any ClassLoader with hotswap-agent.properties directly. The only presumption it is that it is instance of URLClassLoader and it use URLClassPath ucp property internally. This is true for system classloaders as well as Tomcat/Jetty classloaders.

Linkage error in Wildfly because of differences between JasperLoader and ModuleClassLoader.

I don't know how class loaders work. I only have a vague idea. So I'm sorry if I'm not precise with this description. Here I go...

I'm running Wildfly 8.1.0, with JDK 8 Update 05 and HotswapAgent 0.1 Beta 4. I've successfully installed DCEVM 25.5-b02-dcevmlight-58 as an alternative JVM. I've been able to correctly hotswap several classes. However, I've problems when the class that I hotswap is used in a JSP file but has been instantiated from a class stored in WEB-INF/classes/ . Every time that I do that, I got a java.lang.LinkageError.

Testing it is very easy. Create a WAR file with a class that instantiates itself. For example:

package myweb;

public class Test {

private Test () {
}

public static Test create () {
  return new Test ();
}

}

Then write a call to myweb.Test.create () in a JSP file and request such JSP from your browser. It's OK. Now edit the class as you want, submit the changes with your IDE and request the JSP again. It will fail and the server will output:

java.lang.LinkageError: loader constraint violation: when resolving method "myweb.Test.create()Lmyapp/Test;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/test_jsp, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for the method's defining class, myapp/Test, have different Class objects for the type myapp/Test used in the signature

It seems that both class loaders, JasperLoader and ModuleClassLoader, keep a different version of the same class. One of them isn't updated properly.

Thank you.

How to use in Maven Project ?

I exported the two settings variable like this :

export MAVEN_OPTS='-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xms256m -Xmx1048m -XX:MaxPermSize=512m -XX:NewRatio=6 -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled' -XXaltjvm=dcevm -javaagent:e:\HotswapAgent.jar

and maven gave not a valid identifier error. How to use it in maven webapps ?

mvn tomcat7:run

Defining pluginPackages causes NPE on start of application

It seems there is a problem of initialization order of the PluginManager, causing the INSTANCE not being initialized when the custom plugins are initialized:

java.lang.NullPointerException
    at org.hotswap.agent.config.PluginConfiguration.initPluginPackage(PluginConfiguration.java:118)
    at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:107)
    at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:49)
    at org.hotswap.agent.PluginManager.<init>(PluginManager.java:50)
    at org.hotswap.agent.PluginManager.getInstance(PluginManager.java:40)
    at org.hotswap.agent.config.PluginConfiguration.initPluginPackage(PluginConfiguration.java:118)
    at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:107)
    at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:49)
    at org.hotswap.agent.PluginManager.<init>(PluginManager.java:50)
    at org.hotswap.agent.PluginManager.<clinit>(PluginManager.java:34)
    at org.hotswap.agent.HotswapAgent.premain(HotswapAgent.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)

(PluginManager.getInstance() returns null)

Jboss support

When trying to use with Jboss eap 6.1.0:

17:10:52,604 ERROR [stderr](MSC service thread 1-7) Reported exception:
17:10:52,604 ERROR [stderr](MSC service thread 1-7) java.lang.NoClassDefFoundError: org/hotswap/agent/PluginManager
17:10:52,604 ERROR [stderr](MSC service thread 1-7) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:72)
17:10:52,604 ERROR [stderr](MSC service thread 1-7) at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
17:10:52,604 ERROR [stderr](MSC service thread 1-7) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
17:10:52,604 ERROR [stderr](MSC service thread 1-7) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
17:10:52,604 ERROR [stderr](MSC service thread 1-7) at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:54)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at cz.csas.knproxy.localservices.heartbeatservice.v01.HeartbeatServiceImpl.(HeartbeatServiceImpl.java:28)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at java.lang.Class.forName0(Native Method)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at java.lang.Class.forName(Class.java:270)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.jboss.invocation.proxy.AbstractProxyFactory.afterClassLoad(AbstractProxyFactory.java:94)
17:10:52,605 ERROR [stderr](MSC service thread 1-7) at org.jboss.invocation.proxy.AbstractClassFactory.defineClass(AbstractClassFactory.java:166)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.invocation.proxy.AbstractProxyFactory.getCachedMethods(AbstractProxyFactory.java:145)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.as.ee.component.ViewDescription$DefaultConfigurator.configure(ViewDescription.java:193)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:929)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:80)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
17:10:52,606 ERROR [stderr](MSC service thread 1-7) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
17:10:52,607 ERROR [stderr](MSC service thread 1-7) at java.lang.Thread.run(Thread.java:744)
17:10:52,607 ERROR [stderr](MSC service thread 1-7) Caused by: java.lang.ClassNotFoundException: org.hotswap.agent.PluginManager from [Module "deployment.knproxy-ear-1.0.0-SNAPSHOT.ear.knproxy-war.war:main" from Service Module Loader]
17:10:52,607 ERROR [stderr](MSC service thread 1-7) at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196)
17:10:52,607 ERROR [stderr](MSC service thread 1-7) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444)
17:10:52,607 ERROR [stderr](MSC service thread 1-7) at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432)
17:10:52,608 ERROR [stderr](MSC service thread 1-7) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374)
17:10:52,608 ERROR [stderr](MSC service thread 1-7) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119)
17:10:52,608 ERROR [stderr](MSC service thread 1-7) ... 25 more

[jersey] jvm error when I change method signature

When I change a the following method's parameter in the signature with jersey 1.11:

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    @Path("/colors")
    public List<LightColorView> findAllLigthColorsByType(final RequestCriterias criterias) {
        return this.noeudCoordinator.findAllColorsByType(criterias);
    }

I get the following error:

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000000245eb24, pid=692, tid=3664

JRE version: Java(TM) SE Runtime Environment (7.0_71-b14) (build 1.7.0_71-b14)
Java VM: Dynamic Code Evolution 64-Bit Server VM (24.71-b01-dcevmlight-2 mixed mode windows-md64 compressed oops)
Problematic frame:
j om.capgemini.configurator.spaceo.core.dto.request.RequestCriterias.setNodeType(Ljava/lang/String)V+0

Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

An error report file with more information is saved as:
D:\tools\apache-tomcat\7.0.55\bin\hs_err_pid692.log

If you would like to submit a bug report, please visit:
http://ssw.jku.at/dcevm/bugreport/

InvocationTargetException -> Spring plugin (3.1.0M2)

I get the the following error with spring 3.1.0.M2 (newest hotswap version)
HOTSWAP AGENT: 16:2:42.735 ERROR (org.hotswap.agent.annotation.handler.TransformHandler) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.spring.SpringPlugin' class 'org/springframework/beans/factory/support/DefaultListableBeanFactory'.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.hotswap.agent.annotation.handler.TransformHandler.transform(TransformHandler.java:162)
at org.hotswap.agent.annotation.handler.TransformHandler$1.transform(TransformHandler.java:73)
at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:116)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:195)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:128)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
at de.pds.common._internal.support.SpringIOCContainerImpl.(SpringIOCContainerImpl.java:85)
at de.pds.common._internal.support.SpringIOCContainerImpl.(SpringIOCContainerImpl.java:53)
at de.pds.common.support.IOCContainerFactory$ContainerThread.run(IOCContainerFactory.java:303)
Caused by: org.hotswap.agent.javassist.CannotCompileException: [source error] no such class: allBeanNamesByType
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:743)
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:706)
at org.hotswap.agent.plugin.spring.SpringPlugin.register(SpringPlugin.java:145)
... 23 more
Caused by: compile error: no such class: allBeanNamesByType
at org.hotswap.agent.javassist.compiler.MemberResolver.searchImports(MemberResolver.java:451)
at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:395)
at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClassByJvmName(MemberResolver.java:306)
at org.hotswap.agent.javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:642)
at org.hotswap.agent.javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:147)
at org.hotswap.agent.javassist.compiler.ast.CallExpr.accept(CallExpr.java:43)
at org.hotswap.agent.javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
at org.hotswap.agent.javassist.compiler.CodeGen.atStmnt(CodeGen.java:333)
at org.hotswap.agent.javassist.compiler.ast.Stmnt.accept(Stmnt.java:51)
at org.hotswap.agent.javassist.compiler.Javac.compileStmnt(Javac.java:533)
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:725)
... 25 more

Exceptions when reloading Spring related classes

Hi,

Here are some of the exceptions thrown when I recompile the classes while in debug mode:

Exception in thread "Thread-17" HOTSWAP AGENT: 9:32:13.911 ERROR (org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand) - Error refreshing class com/company/cts/training/domain/TrainingCertification$22 in classLoader ContextLoader@1349563128
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor109.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand.executeCommand(ClassPathBeanRefreshCommand.java:73)
    at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
Caused by: java.lang.IllegalArgumentException: Illegal arguments method org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent([interface org.springframework.core.type.classreading.MetadataReader]) on org.springframework.context.annotation.ClassPathBeanDefinitionScanner@3e281ac9, params [org.springframework.core.type.classreading.SimpleMetadataReader@54c8ce83]
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:49)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.isCandidateComponent(ClassPathBeanDefinitionScannerAgent.java:306)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.resolveBeanDefinition(ClassPathBeanDefinitionScannerAgent.java:224)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.refreshClass(ClassPathBeanDefinitionScannerAgent.java:130)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@4d38eed8
    at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:47)
    ... 8 more

HOTSWAP AGENT: 9:32:13.912 ERROR (org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand) - Error refreshing class com/company/cts/training/controllers/UserTrainingAssignmentController in classLoader ContextLoader@1349563128
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor109.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand.executeCommand(ClassPathBeanRefreshCommand.java:73)
    at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
Caused by: java.lang.IllegalArgumentException: Illegal arguments method org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent([interface org.springframework.core.type.classreading.MetadataReader]) on org.springframework.context.annotation.ClassPathBeanDefinitionScanner@3e281ac9, params [org.springframework.core.type.classreading.SimpleMetadataReader@19d71fa8]
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:49)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.isCandidateComponent(ClassPathBeanDefinitionScannerAgent.java:306)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.resolveBeanDefinition(ClassPathBeanDefinitionScannerAgent.java:224)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.refreshClass(ClassPathBeanDefinitionScannerAgent.java:130)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@2a21ef14
    at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:47)
    ... 8 more

HOTSWAP AGENT: 9:32:13.929 ERROR (org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand) - Error refreshing class com/company/cts/site/domain/UserSiteRole_$$_javassist_48 in classLoader ContextLoader@1349563128
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor109.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanRefreshCommand.executeCommand(ClassPathBeanRefreshCommand.java:73)
    at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
Caused by: java.lang.IllegalArgumentException: Illegal arguments method org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent([interface org.springframework.core.type.classreading.MetadataReader]) on org.springframework.context.annotation.ClassPathBeanDefinitionScanner@3e281ac9, params [org.springframework.core.type.classreading.SimpleMetadataReader@49e3c6d]
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:49)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.isCandidateComponent(ClassPathBeanDefinitionScannerAgent.java:306)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.resolveBeanDefinition(ClassPathBeanDefinitionScannerAgent.java:224)
    at org.hotswap.agent.plugin.spring.scanner.ClassPathBeanDefinitionScannerAgent.refreshClass(ClassPathBeanDefinitionScannerAgent.java:130)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@23cb7d87
    at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.hotswap.agent.util.ReflectionHelper.invoke(ReflectionHelper.java:47)
    ... 8 more

I am running this jvm:

HOTSWAP AGENT: 10:29:33.958 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {0.1-beta4} - unlimited runtime class redefinition.
HOTSWAP AGENT: 10:29:34.795 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat, ZK, Logback, JSF, Seam, ELResolver]
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
Dynamic Code Evolution 64-Bit Server VM (build 24.51-b03-dcevmfull-3, mixed mode)

Bare in mind that the codebase in this application is big (several mlocs). When I clicked compile in 1 class in debug mode, 450 classes where reloaded. Several had similar exceptions.
I would have to run the test again if you want a full and clean log.

Does this look like something that could be an environment/setup issue or is it a bug in the agent?

Thanks!

Add maven-release-plugin

It looks like releases are done manually, and pom in master still has 0.1-beta3 version, and it should have some snapshot version.

Default logging is very verbose

If you're experienced with DCEVM, HotswapAgent is easy to get running.
My only problem with the default is that the logging is a very verbose. I'm having trouble following my own application's logging.

Most of the logging looks like this:

(-1 / -1) (org/hotswap/agent/plugin/jvm/AnonymousClassInfos$AnonymousClassInfoMatcher/org/hotswap/agent/plugin/jvm/AnonymousClassInfos$AnonymousClassInfoMatcher)
{instance class} 
 - klass: {other class}
{instance class} 
 - klass: {other class}

I've tried disabling the logging but it appears my LOGGER=warn in a hotswap-agent.properties in my classpath doesn't seem to be picked up.

(BTW: Thanks for a pretty great alternative to JRebel :))

Short log output for hotswapped classes

Log level DEBUG writes too much information about hotswapping to output. Info level doesn't write the names of swapped classes. It would be helpful to extend INFO level about short information about hotswapped classes.

InvocationTargetException in transform method on Spring plugin

I am using embedded tomcat run from the main method. The application uses Spring version 3.1.4

When the application starts, there is the following exception:

II 27, 2014 7:14:35 ODP. org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
II 27, 2014 7:14:35 ODP. org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
II 27, 2014 7:14:35 ODP. org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
2014-02-27 19:14:35.780 [localhost-startStop-1] INFO o.s.web.context.ContextLoader - Root WebApplicationContext: initialization started
2014-02-27 19:14:35.879 [localhost-startStop-1] INFO o.s.w.c.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Thu Feb 27 19:14:35 CET 2014]; root of context hierarchy
HOTSWAP AGENT: 19:14:35.931 ERROR (org.hotswap.agent.annotation.handler.TransformHandler) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.spring.SpringPlugin' class 'org/springframework/beans/factory/support/DefaultListableBeanFactory'.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.hotswap.agent.annotation.handler.TransformHandler.transform(TransformHandler.java:162)
at org.hotswap.agent.annotation.handler.TransformHandler$1.transform(TransformHandler.java:73)
at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:116)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:195)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:128)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:530)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:444)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:388)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.jboss.resteasy.plugins.spring.SpringContextLoaderListener.contextInitialized(SpringContextLoaderListener.java:44)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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:744)
Caused by: org.hotswap.agent.javassist.CannotCompileException: [source error] no such class: allBeanNamesByType
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:743)
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:706)
at org.hotswap.agent.plugin.spring.SpringPlugin.register(SpringPlugin.java:145)
... 38 more
Caused by: compile error: no such class: allBeanNamesByType
at org.hotswap.agent.javassist.compiler.MemberResolver.searchImports(MemberResolver.java:451)
at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:395)
at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClassByJvmName(MemberResolver.java:306)
at org.hotswap.agent.javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:642)
at org.hotswap.agent.javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:147)
at org.hotswap.agent.javassist.compiler.ast.CallExpr.accept(CallExpr.java:43)
at org.hotswap.agent.javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
at org.hotswap.agent.javassist.compiler.CodeGen.atStmnt(CodeGen.java:333)
at org.hotswap.agent.javassist.compiler.ast.Stmnt.accept(Stmnt.java:51)
at org.hotswap.agent.javassist.compiler.Javac.compileStmnt(Javac.java:533)
at org.hotswap.agent.javassist.CtBehavior.insertBefore(CtBehavior.java:725)
... 40 more

What is the error

Jetty + Vraptor + HotswapAgent

[STDOUT] HOTSWAP AGENT: 12:51:31.840 ERROR (org.hotswap.agent.plugin.elresolver.ELResolverPlugin) - Error refreshing Jsf BeanELResolver .
[STDOUT] java.lang.NoSuchMethodException: javax.el.BeanELResolver.purgeBeanClasses(java.lang.ClassLoader)
[STDOUT] at java.lang.Class.getDeclaredMethod(Class.java:2004)
[STDOUT] at org.hotswap.agent.plugin.elresolver.ELResolverPlugin$1.executeCommand(ELResolverPlugin.java:40)
[STDOUT] at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)

ExtraPathResourceClassLoaderTest fails (jdk1.7.0_67 on mac)

I downloaded the project, modified the run-tests.sh to point to my local Java installation (/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home). The result is:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
objc[6005]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
HOTSWAP AGENT: 12:0:46.895 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {0.2.1-SNAPSHOT} - unlimited runtime class redefinition.
Running org.hotswap.agent.plugin.jetty.ExtraPathResourceClassLoaderTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.278 sec <<< FAILURE! - in org.hotswap.agent.plugin.jetty.ExtraPathResourceClassLoaderTest
testGetResource(org.hotswap.agent.plugin.jetty.ExtraPathResourceClassLoaderTest)  Time elapsed: 1.225 sec  <<< FAILURE!
java.lang.AssertionError: Returned after modification
    at org.junit.Assert.fail(Assert.java:88)

The offending line is:

assertNotNull("Returned after modification", classLoader.getResource(tempFile.getName()));

I can provide more information if needed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.