HotSwapAgent 插件 - 未找到插件 class
HotSwapAgent plugin - plugin class not found
我一直在为 HotSwapAgent 开发自定义插件,但遇到了 classloader 缺少插件的奇怪问题 class。
这是
抛出的异常
####<Feb 9, 2015 12:45:54 AM PST> <Notice> <Stdout> <testbox.mycompany> <AdminServer> <Thread-87> <<WLS Kernel>> <> <> <1423471554463> <BEA-000000> <HOTSWAP AGENT: 0:45:54.463 ERROR (org.hotswap.agent.config.PluginRegistry) - Error in plugin initial processing for plugin package 'mycompany.infrastructure.hotswap.agent'
java.lang.ClassNotFoundException: mycompany.infrastructure.hotswap.agent.HotSwapMyCompanyPlugin
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.hotswap.agent.config.PluginRegistry.scanPlugins(PluginRegistry.java:89)
at org.hotswap.agent.config.PluginConfiguration.initPluginPackage(PluginConfiguration.java:120)
at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:109)
at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:97)
at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:154)
at org.hotswap.agent.util.HotswapTransformer.executeCommand(HotswapTransformer.java:163)
at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)>
这是我的热交换-agent.properties 文件
pluginPackages=mycompany.infrastructure.hotswap.agent
autoHotswap=false
LOGGER=info
似乎 hotswap-agent.jar 代理已正确加载,获取 hotswap-agent.properties,但无法加载插件 class。
我怀疑 classloader 层次结构存在问题,因为代理试图加载由 WLS classloader 管理的插件 class。我不知道该怎么办。有什么想法吗?
我正在使用 WLS 应用程序服务器。
看来插件必须要嵌入hotswap-plugin.jar
Linked github issue 描述了这个问题
https://github.com/HotswapProjects/HotswapAgent/issues/67
我一直在为 HotSwapAgent 开发自定义插件,但遇到了 classloader 缺少插件的奇怪问题 class。
这是
抛出的异常####<Feb 9, 2015 12:45:54 AM PST> <Notice> <Stdout> <testbox.mycompany> <AdminServer> <Thread-87> <<WLS Kernel>> <> <> <1423471554463> <BEA-000000> <HOTSWAP AGENT: 0:45:54.463 ERROR (org.hotswap.agent.config.PluginRegistry) - Error in plugin initial processing for plugin package 'mycompany.infrastructure.hotswap.agent'
java.lang.ClassNotFoundException: mycompany.infrastructure.hotswap.agent.HotSwapMyCompanyPlugin
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.hotswap.agent.config.PluginRegistry.scanPlugins(PluginRegistry.java:89)
at org.hotswap.agent.config.PluginConfiguration.initPluginPackage(PluginConfiguration.java:120)
at org.hotswap.agent.config.PluginConfiguration.init(PluginConfiguration.java:109)
at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:97)
at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:154)
at org.hotswap.agent.util.HotswapTransformer.executeCommand(HotswapTransformer.java:163)
at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)>
这是我的热交换-agent.properties 文件
pluginPackages=mycompany.infrastructure.hotswap.agent
autoHotswap=false
LOGGER=info
似乎 hotswap-agent.jar 代理已正确加载,获取 hotswap-agent.properties,但无法加载插件 class。
我怀疑 classloader 层次结构存在问题,因为代理试图加载由 WLS classloader 管理的插件 class。我不知道该怎么办。有什么想法吗?
我正在使用 WLS 应用程序服务器。
看来插件必须要嵌入hotswap-plugin.jar
Linked github issue 描述了这个问题 https://github.com/HotswapProjects/HotswapAgent/issues/67