Feenix 2 Beta

Feenix is a class-reloading tool similar to JRebel

As discussed here, the first release of Feenix was a bit of a dud as it relied on the Instrumentation API. Feenix 2 is a complete rewrite, which has no Instrumentation dependencies and operates similarly to JRebel. However, at this time, Feenix provide only class reloading support; there is no support for reloading frameworks.

Please Note! There are no formal instructions for how to use the Feenix 2 Beta release (not even in the distribution). Please refer to this blog entry for instructions.

You can access the latest Feenix 2 Beta releases from this page. The following is a table with a description of each release.

DateReleaseDescription
October 28, 2014 1.2 Original Instrumentation based design.
February 2, 2014 2.1-beta First non-Instrumentation release. Only tested with simple Swing app. Some major bugs. Kind of a dud. Sorry.
February 11, 2016 2.2-beta Major bugs fixed. Tested with JBoss 7 and JSF Managed Beans.
February 18, 2016 2.3-beta Bug fixed in accessing phantom objects.
February 20, 2016 2.4-beta More bugs fixed (looking up members in inherited by interfaces and accidentally assign more than one of public, private, protected to a method.).
February 22, 2016 2.5-beta More bugs fixed (related to handling synthetic methods inserted by the compiler).
February 25, 2016 2.6-beta More serious bugs fixed. This version should be more reliable.
February 26, 2016 2.6.1-beta 2.6 causes a ClassNotFoundException on ClassHashTracker due to misconfigured obfuscation. This version fixes it. Oops.
February 29, 2016 2.6.2-beta Should fix java.lang.LinkageError: loader constraint violation: loader previously initiated loading for a different type... errors.
March 1, 2016 2.6.3-beta More bugs fixed.
March 3, 2016 2.6.4-beta Fixed errors invoking reloaded methods from reloaded class.
March 7, 2016 2.6.5-beta Fixed verification error Expecting a stackmap frame at branch target....
March 15, 2016 2.6.6-beta More bug fixes.
March 16, 2016 2.6.7-beta More bug fixes. Added access to private variables normally accessed via access$ methods.
March 17, 2016 2.6.8-beta More bug fixes. Added access to private methods normally accessed via access$ methods. Added functionality to handle serialization of reloadable objects.
March 17, 2016 2.6.9-beta Fixed bugs related to accessing private fields and methods (from inner classes etc).
March 21, 2016 2.6.10-beta More bugs.
March 22, 2016 2.6.11-beta Fixed bugs with accessing final variables and accessing fields that change modifiers (i.e. public -> private etc). Also, updated configuration so you no longer need inclusions, exclusions. or a project name. Just needs a classpath for reloading. Syntax is: -javaagent:<path to feenix agent>=reload-classpath=<comma-delimited list of classpaths>
April 09, 2016 2.6.12-beta Switched on inner class support. Its not perfect, but better to have this much than nothing.
April 11, 2016 2.6.13-beta Fixed edge case bug causing ClassNotFoundExceptions
April 12, 2016 2.6.14-beta More bugs fixed.
April 18, 2016 2.6.15-beta Fixed bug regarding the reloading of classes which have a final method in their super type. This has been a problem confirm with Jetty and JBoss.
April 27, 2016 2.6.17-beta Rewrite of classloader instrumentation to fix casting errors.
April 29, 2016 2.6.18-beta Fixed some complications resulting from the last change.
November 9, 2016 2.6.19-beta No functional updates. Last version expired. New expiry date is 12 months from release date.
January 30, 2017 2.6.20-beta Fixed bug caused by a custom classloader passing a null class name to the defineClass(...) method.