HotSwapAgent 无法将 filePath 转换为 classPathPath
HotSwapAgent failed to convert filePath to classPathPath
我正在尝试在我们的项目中使用 HotSwapAgent。
我们正在使用 Wildfly 10.x,我们的项目部署为一个爆炸式 EAR,其中有一个爆炸式 war。
我添加了以下 JVM 选项:
-XXaltjvm=dcevm -javaagent:c:\dev\hotswap-agent.jar
部署 WildFly 时出现以下错误:
HOTSWAP AGENT: 14:42:40.479 ERROR (org.hotswap.agent.plugin.spring.scanner.XmlBeanDefinationScannerAgent) - failed to convert filePath /C:/dev/projects/project_abc/abc/ABC/target/ABC_Exploded.ear/ABCWeb.war/WEB-INF/config/spring/soap-context.xml to classPath path
当我让 Wildfly 运行 时,稍后显示以下错误并且部署失败。
rror creating bean with name 'systemConfigurationService' defined in ServletContext resource [/WEB-INF/config/spring/service-maintenance-context.xml]: Invocation of init method failed; nested exception is java.lang.reflect.UndeclaredThrowableException
有谁知道如何正确配置?
我读过可以将 extraClassPath 放入 HotswapAgent 的属性中,但我不知道应该设置什么。
您必须根据需要更改 org.hotswap.agent.plugin.spring.scanner.XmlBeanDefinationScannerAgent 中的 convertToClasspathURL。
在你上面的例子中似乎只是以下方法:
paths = filePath.split("WEB-INF/config/spring");
if (paths.length == 2) {
return paths[1];
}
convertToClasspathURL(根据您的类路径需要修改后):
private static String convertToClasspathURL(String filePath) {
String[] paths = filePath.split("src/main/resources/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("WEB-INF/classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("target/classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("target/test-classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("WEB-INF/config/spring");
if (paths.length == 2) {
return paths[1];
}
LOGGER.error("failed to convert filePath {} to classPath path", filePath);
return filePath;
}
希望它能解决您的问题!
我正在尝试在我们的项目中使用 HotSwapAgent。 我们正在使用 Wildfly 10.x,我们的项目部署为一个爆炸式 EAR,其中有一个爆炸式 war。 我添加了以下 JVM 选项:
-XXaltjvm=dcevm -javaagent:c:\dev\hotswap-agent.jar
部署 WildFly 时出现以下错误:
HOTSWAP AGENT: 14:42:40.479 ERROR (org.hotswap.agent.plugin.spring.scanner.XmlBeanDefinationScannerAgent) - failed to convert filePath /C:/dev/projects/project_abc/abc/ABC/target/ABC_Exploded.ear/ABCWeb.war/WEB-INF/config/spring/soap-context.xml to classPath path
当我让 Wildfly 运行 时,稍后显示以下错误并且部署失败。
rror creating bean with name 'systemConfigurationService' defined in ServletContext resource [/WEB-INF/config/spring/service-maintenance-context.xml]: Invocation of init method failed; nested exception is java.lang.reflect.UndeclaredThrowableException
有谁知道如何正确配置? 我读过可以将 extraClassPath 放入 HotswapAgent 的属性中,但我不知道应该设置什么。
您必须根据需要更改 org.hotswap.agent.plugin.spring.scanner.XmlBeanDefinationScannerAgent 中的 convertToClasspathURL。
在你上面的例子中似乎只是以下方法:
paths = filePath.split("WEB-INF/config/spring");
if (paths.length == 2) {
return paths[1];
}
convertToClasspathURL(根据您的类路径需要修改后):
private static String convertToClasspathURL(String filePath) {
String[] paths = filePath.split("src/main/resources/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("WEB-INF/classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("target/classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("target/test-classes/");
if (paths.length == 2) {
return paths[1];
}
paths = filePath.split("WEB-INF/config/spring");
if (paths.length == 2) {
return paths[1];
}
LOGGER.error("failed to convert filePath {} to classPath path", filePath);
return filePath;
}
希望它能解决您的问题!