如何打印 Jenkins 插件的当前类路径?
How do I print the current classpath for a Jenkins plugin?
我正在开发一个 Jenkins 插件,但我遇到了一些问题,我认为这可能是由于插件的类路径中缺少一个 jar,即使它位于插件的 WEB-INF/lib 目录中。
通常我会在 Java 中使用以下代码来打印类路径,但这似乎不适用于 Jenkins。
ClassLoader cl = getClass().getClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
当我执行插件时,上面的代码导致 ClassCastException
异常被抛出并显示消息 hudson.ClassicPluginStrategy$AntClassLoader2 cannot be cast to java.net.URLClassLoader
打印 Jenkins 插件使用的类路径的最佳方式是什么?
通读 AntClassLoader
的 Javadoc 后,解决方案似乎比我预期的要容易得多,因此我编写了以下代码,可用于打印 Jenkins 插件的类路径。
AntClassLoader cl = (AntClassLoader) getClass().getClassLoader();
String[] classpath = cl.getClasspath().split(":");
for (String classpathElement : classpath) {
System.out.println(classpathElement);
}
我正在开发一个 Jenkins 插件,但我遇到了一些问题,我认为这可能是由于插件的类路径中缺少一个 jar,即使它位于插件的 WEB-INF/lib 目录中。
通常我会在 Java 中使用以下代码来打印类路径,但这似乎不适用于 Jenkins。
ClassLoader cl = getClass().getClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
当我执行插件时,上面的代码导致 ClassCastException
异常被抛出并显示消息 hudson.ClassicPluginStrategy$AntClassLoader2 cannot be cast to java.net.URLClassLoader
打印 Jenkins 插件使用的类路径的最佳方式是什么?
通读 AntClassLoader
的 Javadoc 后,解决方案似乎比我预期的要容易得多,因此我编写了以下代码,可用于打印 Jenkins 插件的类路径。
AntClassLoader cl = (AntClassLoader) getClass().getClassLoader();
String[] classpath = cl.getClasspath().split(":");
for (String classpathElement : classpath) {
System.out.println(classpathElement);
}