Java unlimited redefinition of classes at runtime.

Overview

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

Download and install latest jdk8-dcevm + HotswapAgent or download jdk11-dcevm with integrated HotswapAgent and install it as an alternative JDK. In the case of dcevm8, launch your application with 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.

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!

The sourcespy dashboard provides a high-level overview of the repository including module dependencies, module hierarchy, external libraries, and other components of the system.

Issue triage Open Source Helpers

You can contribute by triaging issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to subscribe to hotswapagent on CodeTriage.

Quick start:

Install

  1. download latest release of DCEVM Java patch and launch the installer (e.g. java -jar installer-light.jar). Currently, you need to select the correct installer for Java major version (7/8).
  2. select java installation directory on your disc and press "Install DCEVM as altjvm" button. Java 1.7+ versions are supported.
  3. download latest release of Hotswap agent jar, unpack hotswap-agent.jar and put it anywhere on your disc. For example: C:\java\hotswap-agent.jar

Run your application

  1. add following command line java attributes: -XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar (you need to replace PATH_TO_AGENT with an actual) directory. For example java -XXaltjvm=dcevm -javaagent:c:\java\hotswap-agent.jar YourApp. See IntelliJ IDEA and Netbeans forum threads for IDE specific setup guides. If your application is already running, you still can attach the agent jar using the example code snippet.

  2. (optional) create a file named "hotswap-agent.properties" inside your resources directory, see available properties and default values: https://github.com/HotswapProjects/HotswapAgent/blob/master/hotswap-agent-core/src/main/resources/hotswap-agent.properties

  3. 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. save a changed resource and/or use the HotSwap feature of your IDE to reload changes

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 the 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!
  • 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 JRE patch that allows almost any structural class change on hotswap (with an exception of 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 targeted towards a specific framework. For example Spring plugin uses agent 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 other

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.
  • 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 files). 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 (3x, 4.x, 5.x) - Reload Spring configuration after class definition/change.
  • Vaadin (10.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.

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>

(Note that the JAR is not yet in central maven repository - you need to build it from source first).

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 setup JAVA_HOME location directory manually. At least Java 7 and Java 8 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

In case your DCEVM is named differently i.e. server

mvn release:prepare -Darguments="-Ddcevm=server"
mvn release:perform -Darguments="-Ddcevm=server"

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
  • Sergey Lysenko - Weld plugin
  • Samuel Pelletier - WebObjects plugin
  • Jan Tecl - web design
  • Lukasz Warzecha - Log4j2 plugin
  • Thomas Heigl - Wicket plugin
  • AJ Banck - FreeMarker plugin
  • Sinan Yumak - Mojarra, MyFaces plugins

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 migration, contributor
  • Jiri Bubnik - java9,java11 migration
Comments
  • ConcurrentModificationException in EventDispatcher

    ConcurrentModificationException in EventDispatcher

    I received the following stacktrace using 1.4.1 and jbr_dcevm-17-osx-x64-b135.1

    Exception in thread "HotSwap Dispatcher" java.util.ConcurrentModificationException
    	at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
    	at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
    	at org.hotswap.agent.watch.nio.EventDispatcher.run(EventDispatcher.java:124)
    

    Seems related to https://github.com/HotswapProjects/HotswapAgent/issues/155

    opened by NicklasWallgren 21
  • Spring plugin - ProxyReplacer dependency

    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.

    bug 
    opened by edudant 20
  • Exceptions when reloading Spring related classes

    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!

    opened by Kidlike 14
  • HotSwapAgent + JetBrainsRuntime 17 not working

    HotSwapAgent + JetBrainsRuntime 17 not working

    I'm trying to use HotSwap Agent with JBR 17.0.1 and I'm using hotswap-agent-1.4.2-SNAPSHOT.jar. When I run the app this is the errors I get:

    java.lang.reflect.InaccessibleObjectException: Unable to make field private final jdk.internal.loader.URLClassPath java.net.URLClassLoader.ucp accessible: module java.base does not "opens java.net" to unnamed module @1e730495
            at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
            at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
            at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
            at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
            at org.hotswap.agent.util.classloader.URLClassLoaderHelper.prependClassPath(URLClassLoaderHelper.java:86)
            at org.hotswap.agent.config.PluginConfiguration.initExtraClassPath(PluginConfiguration.java:200)
            at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:181)
            at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:80)
            at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:191)
            at org.hotswap.agent.util.HotswapTransformer$1.executeCommand(HotswapTransformer.java:316)
            at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:43)
    

    And also:

    HOTSWAP AGENT: 16:33:56.160 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [com.lorenzoferrante.demo.HelloServlet] (autoHotswap)
    HOTSWAP AGENT: 16:33:56.162 ERROR (org.hotswap.agent.plugin.jdk.JdkPlugin) - flushClassInfoCache() exception Unable to make public final void com.sun.beans.util.Cache.clear() accessible: module java.desktop does not "exports com.sun.beans.util" to unnamed module @1e730495.
    

    These are the java opts:

    -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n 
    -javaagent:/opt/hotswap-agent/hotswap-agent.jar 
    -Dextra.class.path=/extra_class_path 
    -Dwebapp.dir=/webapp_dir 
    --add-opens java.base/jdk.internal.loader=ALL-UNNAMED 
    --add-opens java.desktop/com.sun.beans.introspect=ALL-UNNAMED
    

    How can I fix these errors?

    Thank you very much

    opened by lorenzoferrante 13
  • Error modifying class for cglib proxy creation parameter recording

    Error modifying class for cglib proxy creation parameter recording

    Hi,

    I'd like to use the hotswap agent as an external library with the JetBrains runtime (11.x at the moment) to run IntelliJ itself.

    I am using the latest HA snapshot 1.4.2-SNAPSHOT.

    The java process is started with : -XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=external -javaagent:hotswap-agent-1.4.2-SNAPSHOT.jar among other flags and options.

    However I noticed an error with a stacktrace on stdout.

    HOTSWAP AGENT: 13:50:18.121 ERROR (org.hotswap.agent.plugin.proxy.ProxyPlugin) - Error modifying class for cglib proxy creation parameter recording
    org.hotswap.agent.javassist.CannotCompileException: [source error] no such class: org.hotswap.agent.plugin.proxy.hscglib.GeneratorParametersRecorder
    

    I am not sure if this is an actual bug or a misconfiguration on my end.

    org.hotswap.agent.javassist.CannotCompileException
    HOTSWAP AGENT: 13:50:18.121 ERROR (org.hotswap.agent.plugin.proxy.ProxyPlugin) - Error modifying class for cglib proxy creation parameter recording
    org.hotswap.agent.javassist.CannotCompileException: [source error] no such class: org.hotswap.agent.plugin.proxy.hscglib.GeneratorParametersRecorder
    	at org.hotswap.agent.javassist.CtBehavior.insertAfter(CtBehavior.java:909)
    	at org.hotswap.agent.javassist.CtBehavior.insertAfter(CtBehavior.java:824)
    	at org.hotswap.agent.plugin.proxy.hscglib.GeneratorParametersTransformer.transform(GeneratorParametersTransformer.java:57)
    	at org.hotswap.agent.plugin.proxy.ProxyPlugin.transformDefinitions(ProxyPlugin.java:145)
    	at jdk.internal.reflect.GeneratedMethodAccessor183.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:218)
    	at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:112)
    	at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:246)
    	at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
    	at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    	at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
    	at java.base/java.lang.ClassLoader.defineClass2(Native Method)
    	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1109)
    	at com.intellij.util.lang.UrlClassLoader.consumeClassData(UrlClassLoader.java:290)
    	at com.intellij.util.lang.ZipResourceFile.findClass(ZipResourceFile.java:116)
    	at com.intellij.util.lang.JarLoader.findClass(JarLoader.java:55)
    	at com.intellij.util.lang.ClassPath.findClassInLoader(ClassPath.java:217)
    	at com.intellij.util.lang.ClassPath.findClass(ClassPath.java:176)
    	at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:223)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    	at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:39)
    	at net.sf.cglib.proxy.AdvancedEnhancer.<init>(AdvancedEnhancer.java:159)
    	at net.sf.cglib.proxy.AdvancedProxy.createProxy(AdvancedProxy.java:111)
    	at net.sf.cglib.proxy.AdvancedProxy.createProxy(AdvancedProxy.java:94)
    	at net.sf.cglib.proxy.AdvancedProxy.createProxy(AdvancedProxy.java:79)
    	at com.intellij.util.xml.impl.DomInvocationHandler.getProxy(DomInvocationHandler.java:523)
    	at com.intellij.util.xml.impl.DomFileElementImpl.getRootElement(DomFileElementImpl.java:271)
    	at com.intellij.spring.index.SpringIndexUtil.getAllBeanInfos(SpringIndexUtil.java:122)
    	at com.intellij.spring.index.SpringIndexUtil.indexFile(SpringIndexUtil.java:31)
    	at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:306)
    	at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:297)
    	at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:182)
    	at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:47)
    	at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:244)
    	at com.intellij.indexing.composite.CompositeInvertedIndexBase.updateBaseIndex(CompositeInvertedIndexBase.java:240)
    	at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:60)
    	at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:27)
    	at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1534)
    	at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$27(FileBasedIndexImpl.java:1408)
    	at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:627)
    	at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1376)
    	at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1330)
    	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$5(IndexUpdateRunner.java:267)
    	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521)
    	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:486)
    	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1084)
    	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:75)
    	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
    	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:115)
    	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
    	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
    	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
    	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112)
    	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:75)
    	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486)
    	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:421)
    	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:186)
    	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:270)
    	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$4(IndexUpdateRunner.java:210)
    	at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:83)
    	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:213)
    	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$3(IndexUpdateRunner.java:147)
    	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:246)
    	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:32)
    	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:225)
    	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:213)
    	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:214)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    	at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: compile error: no such class: org.hotswap.agent.plugin.proxy.hscglib.GeneratorParametersRecorder
    	at org.hotswap.agent.javassist.compiler.MemberResolver.searchImports(MemberResolver.java:479)
    	at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:422)
    	at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClassByJvmName(MemberResolver.java:329)
    	at org.hotswap.agent.javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:711)
    	at org.hotswap.agent.javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:170)
    	at org.hotswap.agent.javassist.compiler.ast.CallExpr.accept(CallExpr.java:49)
    	at org.hotswap.agent.javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:266)
    	at org.hotswap.agent.javassist.compiler.CodeGen.atStmnt(CodeGen.java:360)
    	at org.hotswap.agent.javassist.compiler.ast.Stmnt.accept(Stmnt.java:53)
    	at org.hotswap.agent.javassist.compiler.Javac.compileStmnt(Javac.java:578)
    	at org.hotswap.agent.javassist.CtBehavior.insertAfterAdvice(CtBehavior.java:931)
    	at org.hotswap.agent.javassist.CtBehavior.insertAfter(CtBehavior.java:883)
    	... 82 more
    
    opened by bric3 12
  • HA-Agent not detecting changes to Class in JBoss + EnhancerProxyCreater can't create proxy! [1.3.1 Snapshot]

    HA-Agent not detecting changes to Class in JBoss + EnhancerProxyCreater can't create proxy! [1.3.1 Snapshot]

    Context : I have deployed HA on Jboss Multi-Module project and I am using the Intelli J plugin with HA 1.3.1 snapshot! I've added the extraClasspath in HotswapAgent and along with that in Jboss through the deployment descriptor.

    Problem with File Changes not being detected The Problem is that after deploying the application, HA is not being able to detect the changes that I make to a particular class file; yes I have checked the intelli-j plugin on another test project and also have enabled intellij for this run configuration so that is not an issue. I get no class reloaded message or anything. Just the class gets rebuild by intelli-j, not regular log message that HA usually does.

    I think the HA watcher might be responsible for this but I don't know for certain.

    Problem with EnhancerProxyCreater I get the following warning messaging during the deployment of the application. I do not understand what it is or whether it might be responsible for the problem above but I will state it here.

    This is the message I get for different classes during deployment. org.hotswap.agent.plugin.spring.getbean.EnhancerProxyCreater

    "Can't create proxy for " + bean.getClass().getSuperclass()
                      + " because there is no default constructor,"
                       + " which means your non-singleton bean created before won't get rewired with new props when update class."
    

    If you guys need any other debug information or anything, I'd post it here. Thank You!

    Fixed by external config 
    opened by MrABKhan 12
  • JVM Crash using Maven Multi-Module +  Jetty

    JVM Crash using Maven Multi-Module + Jetty

    I'm having problems with a maven environment with multiple modules. When I change anything in the main application it works normally, but when I change any line in a module, the JVM stops.

    EDIT: I believe the problem is related by the fact that the method is being called in scriplet from within the JSP.

    I am using:

    -noverify -XX:+UnlockDiagnosticVMOptions -XX:+EnableInvokeDynamic -javaagent:/media/hotswap-agent-1.1.0-SNAPSHOT.jar -XXaltjvm=dcevm

    OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13) OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

    Console error

    HOTSWAP AGENT: 19:10:49.139 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [br.com.criativasoft.modulo.boletim.metadados.BoletimJspTableCellRender] (autoHotswap)
    HOTSWAP AGENT: 19:10:49.139 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [br.com.criativasoft.modulo.boletim.metadados.BoletimJspTableCellRender] (autoHotswap)
    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x00007f8cf8f1f550, pid=2014, tid=0x00007f8ce2fb3700
    

    The package br.com.criativasoft.modulo.boletim, is another WAR module.

    Will the problem be that the class is being loaded twice?

    I've attached the JVM error log

    hs_err_pid2014.log.txt

    opened by ricardojlrufino 12
  • Issues with 1.3.1-SNAPSHOT and extraClasspath

    Issues with 1.3.1-SNAPSHOT and extraClasspath

    Thanks for the great library and your work on JDK11!

    I just downloaded the latest JDK11 binaries and tested them with my application and a vanilla Spring Boot starter application (see attachment).

    Everything seems to work fine with the default configuration.

    If I add anything to extraClasspath the application fails to start with ClassNotFoundExceptions:

    Caused by: java.lang.NoClassDefFoundError: org/hotswap/agent/javassist/util/proxy/ProxyObject
    at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
    at java.base/java.lang.System$2.defineClass(System.java:2123) ~[na:na]
    at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:962) ~[na:na]
    at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:298) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:48) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:263) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:136) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:603) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:587) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:523) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:449) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.util.classloader.URLClassLoaderHelper.<clinit>(URLClassLoaderHelper.java:47) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginConfiguration.initExtraClassPath(PluginConfiguration.java:178) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:159) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:62) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:170) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:143) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.config.PluginRegistry.initializePlugin(PluginRegistry.java:140) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.util.PluginManagerInvoker.callInitializePlugin(PluginManagerInvoker.java:26) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.hotswap.agent.plugin.tomcat.TomcatPlugin.init(TomcatPlugin.java:106) ~[hotswap-agent.jar:1.3.1-SNAPSHOT]
    at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:422) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    ... 9 common frames omitted    
    

    You can easily verify this behavior by uncommenting extraClasspath in the attached application and running com.example.demo.DemoApplication.

    demo.zip

    bug 
    opened by theigl 11
  • i18n properties in JSF project on IntelliJ

    i18n properties in JSF project on IntelliJ

    Im trying to make hotswap agent 1.3 + dcevm on JDK 8u172 reload my i18n properties files after the edition process on intellij but until now, no way to make this thing work...

    I defined the propoerties on the agent properties file but i don't know if the way i do will work:

    watchResources=${project.root}/src/main/resources;
    extraClasspath=${project.root}/target/classes;
    

    I tryed to do in the same way like jrebel, but no hotswap for i18n properties... The project root variable is replaced by the maven resources pluign when i build the project and is a direct reference to the ${basedir} variable from maven..

    Any advice?

    opened by arthurgregorio 11
  • InvocationTargetException in method watchReload on plugin org.hotswap.agent.plugin.hotswapper.HotswapperPlugin

    InvocationTargetException in method watchReload on plugin org.hotswap.agent.plugin.hotswapper.HotswapperPlugin

    I've installed DCEVM-light and hotswap and configured it on Netbeans. But it's not hot swapping my webapp on tomcat 8 as it throws following exception. After several tries of hot swapping, it reload fully.

    Wed Apr 19 14:09:30 ULAST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
    19-Apr-2017 14:09:41.222 INFO [http-nio-8084-exec-2] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started
    19-Apr-2017 14:09:41.237 WARNING [http-nio-8084-exec-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    19-Apr-2017 14:09:41.237 WARNING [http-nio-8084-exec-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
     java.lang.Object.wait(Native Method)
     java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
     com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
    19-Apr-2017 14:09:41.289 INFO [Thread-115] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [com.ezagas.controller.IndexController]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
     java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.ezagas.controller.IndexController]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    HOTSWAP AGENT: 14:09:41.291 ERROR (org.hotswap.agent.annotation.handler.WatchEventCommand) - InvocationTargetException in method watchReload on plugin org.hotswap.agent.plugin.hotswapper.HotswapperPlugin
    java.lang.reflect.InvocationTargetException
    	at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source)
    	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1355)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1341)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1206)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.hotswap.agent.annotation.handler.WatchEventCommand.onWatchEvent(WatchEventCommand.java:172)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    	at org.hotswap.agent.annotation.handler.WatchEventCommand.executeCommand(WatchEventCommand.java:80)
    	at org.hotswap.agent.plugin.hotswapper.HotswapperPlugin.watchReload(HotswapperPlugin.java:66)
    	at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source)
    	at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
    Caused by: java.lang.IllegalStateException: Can't overwrite cause with java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.ezagas.controller.IndexController]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    	at java.lang.Throwable.initCause(Throwable.java:457)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1344)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1206)
    	at org.hotswap.agent.annotation.handler.WatchEventCommand.onWatchEvent(WatchEventCommand.java:172)
    	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    	at org.hotswap.agent.annotation.handler.WatchEventCommand.executeCommand(WatchEventCommand.java:80)
    	at org.hotswap.agent.plugin.hotswapper.HotswapperPlugin.watchReload(HotswapperPlugin.java:66)
    	at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
    	... 6 more
    
    Caused by: java.lang.ClassNotFoundException
    19-Apr-2017 14:09:41.295 INFO [Thread-120] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [com.ezagas.controller.IndexController]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
     java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.ezagas.controller.IndexController]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1343)
    	... 9 more
    

    hotswap agent version: 1.1.0-SNAPSHOT Tomcat version: 8.0.27 Java version: 1.8u112 64bit Netbeans: 8.2

    opened by digz6666 11
  • Default logging is very verbose

    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 :))

    opened by michielproce 11
  • HotSwapAgent is trying to compile javax.persistence instead of jakarta.persistence

    HotSwapAgent is trying to compile javax.persistence instead of jakarta.persistence

    I recently upgraded to a new springboot 3.0.1 in which jakarta.persistence package is introduced instead of javax.persistence.*

    JDK 17 (JBR) Springboot 3.x Hibernate 6.x Springframework 6.x jakarta.persistence-api-3.1.0.jar etc... HotSwapAgent is trying to look up javax.persistence.* package...

    Please advise me.

    Caused by: org.hotswap.agent.javassist.CannotCompileException: [source error] no such class: javax.persistence.spi.PersistenceUnitInfo at org.hotswap.agent.javassist.CtNewMethod.make(CtNewMethod.java:84) at org.hotswap.agent.javassist.CtNewMethod.make(CtNewMethod.java:50) at org.hotswap.agent.plugin.hibernate.HibernateTransformers.proxyHibernatePersistence(HibernateTransformers.java:49) ... 165 more Caused by: compile error: no such class: javax.persistence.spi.PersistenceUnitInfo at org.hotswap.agent.javassist.compiler.MemberResolver.searchImports(MemberResolver.java:479) at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:422) at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClassByJvmName(MemberResolver.java:329) at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:346) at org.hotswap.agent.javassist.compiler.MemberResolver.lookupClass(MemberResolver.java:333) at org.hotswap.agent.javassist.compiler.MemberCodeGen.makeParamList(MemberCodeGen.java:1152) at org.hotswap.agent.javassist.compiler.Javac.compileMethod(Javac.java:153) at org.hotswap.agent.javassist.compiler.Javac.compile(Javac.java:102) at org.hotswap.agent.javassist.CtNewMethod.make(CtNewMethod.java:79) ... 167 more

    opened by pbk97030 0
  • `mvn release:perform` failing.

    `mvn release:perform` failing.

    stackoverflow

    mvn dependency:purge-local-repository clean install -U

    ????

    Finally, I can build this thing. I just wanted to add reloading resource bundle(*.properties), xml mappers(*.xml).

    Now I'm trying...


    I can't solve this...


    dependency


    I tried it on Ubuntu(WSL2) but it has same error.


    No effect... I changed to DCEVM 11 but it still has same error.

    java-version


    I didn't noticed it needs Java 11 withe DECVM. I'll test with that setting.

    At least Java 11 with DCEVM should be checked before a release


    mvn release:prepare is done without error.

    I don't know well both HA or maven. I don't know what I need to tell you.

    I needed to change below dependency first.

    <dependency>
                        <groupId>com.sun</groupId>
                        <artifactId>tools</artifactId>
                        <version>1.6</version>
                        <scope>system</scope>
                        <systemPath>C:\Program Files\Java\jdk1.8.0_181\lib\tools.jar</systemPath>
    </dependency>
    

    and then here is what comes.

    [INFO] Hotswap Agent Aggregator ........................... FAILURE [ 24.623 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  28.360 s
    [INFO] Finished at: 2022-12-15T20:03:03+09:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M7:perform (default-cli) on project hotswap-agent-aggregator: Maven execution failed, exit code: 1 -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M7:perform (default-cli) on project hotswap-agent-aggregator: Maven execution failed, exit code: 1
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Maven execution failed, exit code: 1
        at org.apache.maven.plugins.release.PerformReleaseMojo.execute (PerformReleaseMojo.java:213)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: org.apache.maven.shared.release.ReleaseExecutionException: Maven execution failed, exit code: 1
        at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute (AbstractRunGoalsPhase.java:112)
        at org.apache.maven.shared.release.phase.RunPerformGoalsPhase.runLogic (RunPerformGoalsPhase.java:143)
        at org.apache.maven.shared.release.phase.RunPerformGoalsPhase.execute (RunPerformGoalsPhase.java:62)
        at org.apache.maven.shared.release.DefaultReleaseManager.perform (DefaultReleaseManager.java:386)
        at org.apache.maven.shared.release.DefaultReleaseManager.perform (DefaultReleaseManager.java:319)
        at org.apache.maven.plugins.release.PerformReleaseMojo.execute (PerformReleaseMojo.java:209)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: org.apache.maven.shared.release.exec.MavenExecutorException: Maven execution failed, exit code: 1
        at org.apache.maven.shared.release.exec.InvokerMavenExecutor.executeGoals (InvokerMavenExecutor.java:133)
        at org.apache.maven.shared.release.exec.AbstractMavenExecutor.executeGoals (AbstractMavenExecutor.java:71)
        at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute (AbstractRunGoalsPhase.java:105)
        at org.apache.maven.shared.release.phase.RunPerformGoalsPhase.runLogic (RunPerformGoalsPhase.java:143)
        at org.apache.maven.shared.release.phase.RunPerformGoalsPhase.execute (RunPerformGoalsPhase.java:62)
        at org.apache.maven.shared.release.DefaultReleaseManager.perform (DefaultReleaseManager.java:386)
        at org.apache.maven.shared.release.DefaultReleaseManager.perform (DefaultReleaseManager.java:319)
        at org.apache.maven.plugins.release.PerformReleaseMojo.execute (PerformReleaseMojo.java:209)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
        at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    [ERROR]
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn <args> -rf :hotswap-agent-aggregator
    

    and tried to use a higher version of maven-release-plugin, 3.0.0-M7.

    and

                        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                        <maven.compiler.source>1.8</maven.compiler.source>
                        <maven.compiler.target>1.8</maven.compiler.target>
    

    but no luck!

    Please help.

    opened by luceat-lux-vestra 0
  • InvocationTargetException for every plugin (Payara 5 + Openjdk11)

    InvocationTargetException for every plugin (Payara 5 + Openjdk11)

    I am trying to run Payara5 with dcevm 11, just added the VM option -XX:HotswapAgent=fatjar and the initial logs appear correctly:

    Starting HotswapAgent 'D:\dcevm-11.0.15+1\lib\hotswap\hotswap-agent.jar'
    Listening for transport dt_socket at address: 9009
    HOTSWAP AGENT: 20:36:36.486 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {1.4.1} - unlimited runtime class redefinition.
    HOTSWAP AGENT: 20:36:36.752 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [JdkPlugin, Hotswapper, WatchResources, ClassInitPlugin, AnonymousClassPatch, Hibernate, Hibernate3JPA, Hibernate3, Spring, Jersey1, Jersey2, Jetty, Tomcat, ZK, Logback, Log4j2, MyFaces, Mojarra, Omnifaces, ELResolver, WildFlyELResolver, OsgiEquinox, Owb, Proxy, WebObjects, Weld, JBossModules, ResteasyRegistry, Deltaspike, GlassFish, Vaadin, Wicket, CxfJAXRS, FreeMarker, Undertow, MyBatis]
    

    After that, I get an InvocationTargetException for every plugin

     HOTSWAP AGENT: 20:36:54.891 ERROR (org.hotswap.agent.annotation.handler.PluginClassFileTransformer) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.hibernate.HibernatePlugin' class 'org/hibernate/validator/internal/metadata/BeanMetaDataManager'.
    java.lang.reflect.InvocationTargetException
    

    INFO: HOTSWAP AGENT: 20:36:56.648 ERROR (org.hotswap.agent.annotation.handler.PluginClassFileTransformer) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.tomcat.TomcatPlugin' class 'org/apache/naming/resources/ProxyDirContext'.

    INFO:   Virtual server server loaded default web module 
    INFO:   HOTSWAP AGENT: 20:36:57.666 ERROR (org.hotswap.agent.annotation.handler.PluginClassFileTransformer) - InvocationTargetException in transform method on plugin 'class org.hotswap.agent.plugin.jersey2.Jersey2Plugin' class 'org/glassfish/jersey/servlet/ServletContainer'.
    java.lang.reflect.InvocationTargetException
    

    and finally when I try to run any project I got:

    INFO:   WELD-000900: 3.1.4 (Final)
    SEVERE:   Exception during lifecycle processing
    java.lang.NoClassDefFoundError: org/hotswap/agent/config/PluginManager
    	at org.glassfish.weld.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:192)
    	at org.glassfish.weld.RootBeanDeploymentArchive.<init>(RootBeanDeploymentArchive.java:85)
    	at org.glassfish.weld.DeploymentImpl.createModuleBda(DeploymentImpl.java:770)
    	at org.glassfish.weld.DeploymentImpl.<init>(DeploymentImpl.java:156)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:299)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:147)
    	at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:219)
    	at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:336)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:570)
    	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:576)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
    	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:604)
    	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:256)
    	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
    		at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: java.lang.ClassNotFoundException: org.hotswap.agent.config.PluginManager not found by fish.payara.server.internal.web.weld-integration [378]
    	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
    	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    	... 46 more
    
    SEVERE:   Exception while loading the app
    SEVERE:   Exception while loading the app : org/hotswap/agent/config/PluginManager
    java.lang.ClassNotFoundException: org.hotswap.agent.config.PluginManager not found by fish.payara.server.internal.web.weld-integration [378]
    	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
    	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
    	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    	at org.glassfish.weld.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:192)
    	at org.glassfish.weld.RootBeanDeploymentArchive.<init>(RootBeanDeploymentArchive.java:85)
    	at org.glassfish.weld.DeploymentImpl.createModuleBda(DeploymentImpl.java:770)
    	at org.glassfish.weld.DeploymentImpl.<init>(DeploymentImpl.java:156)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:299)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:147)
    	at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:219)
    	at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:336)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:570)
    	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:576)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
    		at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    	at java.base/java.lang.Thread.run(Thread.java:829)
    
    SEVERE:   Exception during lifecycle processing
    java.lang.NoClassDefFoundError: org/hotswap/agent/config/PluginManager
    	at org.glassfish.weld.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:192)
    	at org.glassfish.weld.RootBeanDeploymentArchive.<init>(RootBeanDeploymentArchive.java:85)
    	at org.glassfish.weld.DeploymentImpl.createModuleBda(DeploymentImpl.java:770)
    	at org.glassfish.weld.DeploymentImpl.<init>(DeploymentImpl.java:156)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:299)
    	at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:147)
    	at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:219)
    	at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:336)
    	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:570)
    	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:576)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
    	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
    	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:604)
    	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:256)
    	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:166)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    	
    SEVERE:   Exception while loading the app
    SEVERE:   Exception while loading the app : org/hotswap/agent/config/PluginManager
    
    opened by FiruzzZ 0
  • first attempt to migrate to jakarta

    first attempt to migrate to jakarta

    @skybber what do you think of this ?

    Error messages from the agent disappeared and it kinda works (more or less).

    I may need an help double chicking if this is where you wanted to go ...

    opened by amoscatelli 27
  • Jakarta support

    Jakarta support

    Is support for jakarta packages planned ?

    After migrating it keeps complaining like this :

    11:22:46,238 INFO [stdout] (MSC service thread 1-6) Caused by: compile error: no such class: javax.enterprise.context.spi.Contextual 11:23:52,099 INFO [stdout] (ServerService Thread Pool -- 7) Caused by: compile error: no such class: javax.persistence.spi.PersistenceUnitInfo

    Thank you in advance

    opened by amoscatelli 1
  • inteleji idea ultimate 2022.2.3 and Java 1.8.0_181 - hierarchy change not implemented : Operation not supported by VM

    inteleji idea ultimate 2022.2.3 and Java 1.8.0_181 - hierarchy change not implemented : Operation not supported by VM

    I have a problem during local development with jdk1.8.0_181 and gradle multi module project build and deployed as single war on Tomcat 8.5.68

    When I try to change code at runtime of application and use hotkey - reload changed classes ->

    I get next exception - hierarchy change not implemented MyApp : Operation not supported by VM

    I checked what VM used - java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Dynamic Code Evolution 64-Bit Server VM (build 25.71-b01-dcevmlight-26, mixed mode)

    In inteleji application configuratiuon I also specified next - -XXaltjvm=dcevm -javaagent:C:\Users\developer\Desktop\hotswap-agent-1.4.2-SNAPSHOT.jar

    I dont undestand what reason of this exception - please help

    opened by redkatok 2
Releases(1.4.2-SNAPSHOT)
  • 1.4.2-SNAPSHOT(Jun 19, 2020)

    New Plugins:

    • Idea pluging for developing IntelliJ IDEA in Idea
    • iBatis plugin (thanks to @muwaiwai)
    • jackson plugin (thanks to @liuzhengyang)

    News

    • OWB intercepted bean redefinition
    • Support for jbossmodules 10.1.x
    • Support for JSF ManagedBean annotations (thanks to @sinanyumak)

    Fixes

    • #404 - fix missing declaredMethodCache in java17
    • #391 - Proxy redefinition support in Weld3
    • #355 - VaadinPlugin does not work in hotswapagent 1.4.1 on Wildfly 19 on Windows 10
    • #357 - Doesn't work with hibernate 5.4.15.final
    • #369
    • #383 - java.lang.NoSuchMethodException: org.hibernate.validator.internal.metadata.BeanMetaDataManager.__resetCache()
    • #445 - fix enum field add/remove
    Source code(tar.gz)
    Source code(zip)
    hotswap-agent-1.4.2-SNAPSHOT-sources.jar(1.13 MB)
    hotswap-agent-1.4.2-SNAPSHOT.jar(1.58 MB)
  • RELEASE-1.4.1(Jun 9, 2020)

  • RELEASE-1.4.0(Jan 8, 2020)

    Key features

    • Java11 support
    • Kotlin support - HotswapAgent + dcevm is succesfuly used on many Kotlin projects now

    New Plugins:

    • CXF-JAXRS plugin, with Spring + CDI integration & JAXB realoding
    • FreeMarker plugin (thanks to AJ Banck)
    • MyBatis plugin
    • Undertow plugin
    • Wicket plugin (thanks to T. Heigl)

    New features:

    • Add watchResources support to JBossModules plugin (JbossAS+Wildfly)
    • Weld3 support (CDI-2.0)
    • OWB2 support (CDI-2.0)
    • Deltaspike 1.8, 1.9 support
    • Reloading of CDI beans is skipped for simple method body modifications (using full class signature comparision)
    • Support for watchResources+extraClassPath in SpringBoot applications (TomcatPlugin supports TomcatEmbeddedWebappClassLoader)
    • Improve performance by skipping useless DelegatingClassLoader registration.

    Fixes:

    • #201 - Fix npe in Log4J2 plugin
    • #218 - Exclude jdk.internal.reflect.DelegatingClassLoader
    • #255 - Added check to ProxyReplacer for null beans
    • #264 - Fix extraClassPath in UrlClassLoader
    • #269 - Fix spring plugin on wildfly 12
    • #286 - change log level on reloading of Spring XML config
    • #291 - Fix NPE on private enum redefinition
    • #192 - Fix HA doesn't work on war deployed on Wildfly10.1
    Source code(tar.gz)
    Source code(zip)
    hotswap-agent-1.4.0-sources.jar(1.11 MB)
    hotswap-agent-1.4.0.jar(1.56 MB)
  • RELEASE-1.3.0(May 16, 2018)

    New Plugins:

    • Vaadin
      • Register changes in @Route to the router when a class is modified (add new views on the fly)
      • Changes to a template model are live after a browser refresh
      • All internal metadata caches are cleared whenever a class is changed

    New features:

    • HotswapAgent plugins may be included as a standard maven dependency #242

    Fixes:

    Agent Core:

    • ERROR (org.hotswap.agent.watch.nio.EventDispatcher) - No match for watch event #223

    Spring plugin:

    • Spring plugin registers a managed bean for a prototype bean #241
    • Spring Boot 2 projects throw NoSuchMethodException for __resetCache #221
    • Cannot create proxy for spring component without default constructor #232
    • HotswapSpringCallback not serializable #243

    JBoss plugin:

    • JBoss - Plugin not found in the registry, error on random classloader jars. #229

    Other:

    • Autodeploy snapshot from master to Sonatype #236
    • Release to Maven #224
    • maven central repos not include version 1.2.0 #234
    Source code(tar.gz)
    Source code(zip)
    hotswap-agent-1.3.0.jar(1.47 MB)
    hotswap-agent-core-1.3.0.jar(1.06 MB)
  • RELEASE-1.2.0(Mar 8, 2018)

    New Plugins

    • OpenWebBeans (Tomcat/Tommee supported)
    • Mojarra
    • MyFaces
    • OmniFaces

    New features

    • Support for Java9.
    • WeldPlugin - SesionScoped bean reinjection, EJB session beans support
    • Deltaspike contexts reinjections
    • excludedClassLoaderPatterns: comma separated list of class loaders to exclude from initialization, in the form of RegEx patterns.
    • #171 - hotswap-agent.properties properties values can reference System variables defined by JVM argument -D...
    • improved GlassFish support. Felix OSGi patches, GlassFish/Weld support
    • #197 - multiple webappDir entries allowed. Entrypoints are separated by ',' character

    Fixes:

    • Jersey HK2 service reload on any change
    • Weld plugin field access #161
    • DeltaSpike v1.7 fixes
    • JavaBeans - synthetic classes are flushed from Itrospector cache
    • multi resource methods from extraClassPath, #176
    • fixed problem with not started WebappClassLoader, #185
    • SpringPlugin in JBossAS/Wildfly #140, #184
    • Support symbolic links in extraClassPath #203
    Source code(tar.gz)
    Source code(zip)
    hotswap-agent-1.2.0-sources.jar(1022.42 KB)
    hotswap-agent-1.2.0.jar(1.46 MB)
  • 1.0(Oct 12, 2016)

    New frameworks / JVM plugins:

    • ClassInit - enhance DCEVM by static variables + enum values initialization
    • Hibernate 3 + 4 + 5
    • Deltaspike 1.7
    • RestEasy 3.0
    • Spring 4.2+
    • Weld 2.3, 2.4 - bean reloading in contexts + reloading strategy
    • MyFaces 2.2
    • Log4j 2.7
    • Jersey1

    Core changes:

    • support to attach agent runtime to JVM process
    • Allow configuration to be loaded from an external file
    • _jsp.class are excluded from .class processing
    • META-INF + Maven Versioning support

    Minor changes:

    • LOGGER timestamp format can be setup in properties file
    • #154 Modify the ClassPathScanner to support URIs prefixed with "zip:"
    • #145 Added support to attach agent runtime to JVM process
    • #108 Allow configuration to be loaded from an external file
    • #104 Adding LOGFILE.append configuration option

    Bugfixes

    • #155 Modifying jsp on tomcat8 threw ConcurrentModificationException
    • #157 ZK label files not refreshing on change.
    • _jsp.class skipped from .class processing - fixes problems with JSPs
    • #141 WebObjects plugin - clear validation cache on every reload
    • #124 JBossModulesPlugin on JBoss Wildfly 10
    • windows NIO2 watcher patched issues with massive class reload
    • #116 Fixed UndeclaredThrowableException in Spring plugin.
    • #103 java.lang.RuntimeException: org.hotswap.agent.javassist.NotFoundException
    • #98 Handle null ClassLoader
    Source code(tar.gz)
    Source code(zip)
    hotswap-agent-1.0-sources.jar(969.70 KB)
    hotswap-agent-1.0.jar(1.37 MB)
  • 0.3.0-SNAPSHOT@2016/02/15(Feb 15, 2016)

  • RELEASE-0.3(Aug 18, 2015)

  • v0.2(Nov 9, 2014)

  • 0.1-beta4(Jul 28, 2014)

  • 0.1-beta3(Apr 2, 2014)

  • 0.1-beta2(Jan 26, 2014)

    Quick update to 0.1-beta1, it is targeted to fix stability issues. This release has been tested with a large enterprise application and it should work even after a complete rebuild in running application.

    Check new ExamplePlugin to learn how to start with your custom plugin.

    Installation and setup notes can be found in the main README.md file (or inside the release package).

    Download the release package HotswapAgent-0.1-beta2.zip. Part of the package is Java patch (DCEVM) prebuilt for JDK 1.7.0_45 windows 64bit and linux AMD 64bit.

    Source code(tar.gz)
    Source code(zip)
    HotswapAgent-0.1-beta2.zip(8.13 MB)
  • 0.1-beta1(Jan 20, 2014)

    This release has been used in a real world development process and should be working sufficiently to help you with development.

    However, there are many development setups (various IDE, application server, frameworks) and many of them have never been tested. Please use HotswapAgent discussion group to ask a question or share a success story about working setup with detail guidelines.

    Installation and setup notes can be found in the main README.md file (or inside the release package).

    Download the release package HotswapAgent-0.1-beta1.zip.

    Source code(tar.gz)
    Source code(zip)
    HotswapAgent-0.1-beta1.zip(3.47 MB)
  • 0.1-SNAPSHOT(Nov 29, 2013)

Owner
null
Dynamic Code Evolution VM for Java 7/8

NEWS: Dcevm-11 on Trava OpenJDK There is a new distribution channel for DCEVM-11 binaries on - TravaOpenjdk! DCEVM This project is a fork of original

null 1.6k Dec 28, 2022
A library that simplifies error handling for Functional Programming in Java

Faux Pas: Error handling in Functional Programming Faux pas noun, /fəʊ pɑː/: blunder; misstep, false step Faux Pas is a library that simplifies error

Zalando SE 114 Dec 5, 2022
Java library for handling exceptions in concise, unified, and architecturally clean way.

NoException NoException is a Java library for handling exceptions in concise, unified, and architecturally clean way. System.out.println(Exceptions.lo

Robert Važan 79 Nov 17, 2022
SneakyThrow is a Java library to ignore checked exceptions

SneakyThrow SneakyThrow is a Java library to ignore checked exceptions. You can integrate it using maven: <dependency> <groupId>com.rainerhahnekamp<

Rainer Hahnekamp 73 Nov 8, 2022
simple tail call optimization and stack safety for Java

com.github.kag0.tail simple tail call optimization for Java enables infinitely deep tail recursive calls without throwing a StackOverflowError no tran

Nathaniel Fischer 18 Dec 7, 2022
Project on End to End CI/CD pipeline for java based application using Git,Github,Jenkins,Maven,Sonarqube,Nexus,Slack,Docker and Kuberenets with ECR as private docker registry and Zero Downtime Deployment

Project on End to End CI/CD pipeline for java based application using Git,Github,Jenkins,Maven,Sonarqube,Nexus,Slack,Docker and Kuberenets with ECR as private docker registry and Zero Downtime Deployment.

NITHIN JOHN GEORGE 10 Nov 22, 2022
An open-source OTP & Call flooding android application with unlimited sending capability.

Tsunami v1.3 An open-source SMS & Call flooding Android application with unlimited OTP bombing capability ?? Notes ⚙ Click here for App Usage Guide Th

Utsanjan Maity 83 Jan 2, 2023
JHook - A tool that can dynamically modify Java classes at runtime.

JHook A tool that can dynamically modify Java classes at runtime. Demo Tested on Java 1.8 - Java 17, just support JDK package com.binklac.jhook.test;

VeroFess 11 Dec 23, 2022
Minecraft mod running on the TTCp engine to load modules written in JS at runtime - with runtime deobfuscation!

PolyFire ClickGUI opens with NUMROW_0 How to use: Run -jsmodules to initialize Navigate to your .minecraft folder Go to config/pf/modules/ Copy Exampl

Daniel H. 8 Nov 18, 2022
Joda-Time is the widely used replacement for the Java date and time classes prior to Java SE 8.

Joda-Time Joda-Time provides a quality replacement for the Java date and time classes. The design allows for multiple calendar systems, while still pr

Joda.org 4.9k Dec 27, 2022
Free and 100% open source Progressive Java Runtime for modern Java™ deployments supported by a leading OpenJDK contributor

BellSoft Liberica JDK is a build of OpenJDK that is tested and verified to be compliant with the Java SE specification using OpenJDK Technology Compat

null 195 Dec 22, 2022
ijrd - internal java runtime debugger (loads through java agents LOL)

ijrd ijrd - internal java runtime debugger (loads through java agents LOL) this actually requires brain to build and then setup little guide to setup

null 6 Jan 28, 2022
A mitigation for CVE-2021-44228 (log4shell) that works by patching the vulnerability at runtime. (Works with any vulnerable java software, tested with java 6 and newer)

Log4jPatcher A Java Agent based mitigation for Log4j2 JNDI exploits. This agent employs 2 patches: Disabling all Lookup conversions (on supported Log4

null 45 Dec 16, 2022
Resconstruct is a java library to infer missing information vectors of java classes.

Reconstruct Resconstruct is a java library to infer missing information vectors of java classes. Features Phantom classes Inheritance solving Dummy fi

Nowilltolife 14 Nov 17, 2022
Speedment is a Stream ORM Java Toolkit and Runtime

Java Stream ORM Speedment is an open source Java Stream ORM toolkit and runtime. The toolkit analyzes the metadata of an existing SQL database and aut

Speedment 2k Dec 21, 2022
Java runtime metadata analysis

Released org.reflections:reflections:0.9.12 - with support for Java 8 Reflections library has over 2.5 million downloads per month from Maven Central,

null 4.4k Dec 29, 2022
A Java to iOS Objective-C translation tool and runtime.

J2ObjC: Java to Objective-C Translator and Runtime Project site: https://j2objc.org J2ObjC blog: https://j2objc.blogspot.com Questions and discussion:

Google 5.9k Dec 29, 2022