Я работаю над плагином для сервера OpenFire. Я пытаюсь интегрировать Spring в этот плагин. Когда инициализируется плагин, я хотел бы вызвать Основной метод для моей Spring.Вызов основного метода из другой ошибки класса
Когда я выполняю Spring только, он работает нормально, но когда я вызываю его основной метод из моего плагина, я получаю исключение. Как я могу назвать основной метод Spring. Что мне не хватает. Любая помощь будет оценена по достоинству. Спасибо.
Весна Главный класс:
@SpringBootApplication public class Application { public static void main(String[] args) { try { SpringApplication.run(Application.class, args); System.out.println("No error"); } catch (Exception e) { System.out.println("Error " + e); } } }
OpenFire Plugin: Выходной
public class FetchNewsPlugin implements Plugin { @Override public void initializePlugin(PluginManager manager, File pluginDirectory) { Runnable r = new Runnable() { public void run() { String[] args = {}; Application.main(args); } }; new Thread(r).start(); System.out.println("Plugin Intitialized"); } @Override public void destroyPlugin() { } }
Вход:
Exception in thread "Thread-13" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication at hello.Application.main(Application.java:11) at org.clinton.openfire.plugin.FetchNewsPlugin$1.run(FetchNewsPlugin.java:20) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more
Где Исключение бросают:
/** * Finds and loads the class with the specified name from the URL search * path. Any URLs referring to JAR files are loaded and opened as needed * until the class is found. * * @param name the name of the class * @return the resulting class * @exception ClassNotFoundException if the class could not be found, * or if the loader is closed. * @exception NullPointerException if {@code name} is {@code null}. */ protected Class findClass(final String name) throws ClassNotFoundException { final Class result; try { result = AccessController.doPrivileged( new PrivilegedExceptionAction>() { public Class run() throws ClassNotFoundException { String path = name.replace('.', '/').concat(".class"); Resource res = ucp.getResource(path, false); if (res != null) { try { return defineClass(name, res); } catch (IOException e) { throw new ClassNotFoundException(name, e); } } else { return null; } } }, acc); } catch (java.security.PrivilegedActionException pae) { throw (ClassNotFoundException) pae.getException(); } if (result == null) { throw new ClassNotFoundException(name); } return result; }
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/clinton/git/Openfire/bin/build/lib/ant/slf4j-simple.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/clinton/git/Openfire/bin/build/lib/dist/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/clinton/git/Openfire/build/lib/ant/slf4j-simple.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/clinton/git/Openfire/build/lib/dist/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
Я не думаю, что я использую любой URLClassLoader. Я не затронул ничего такого имени o: o. Если вам нужен мой pom.xml, дайте мне знать, я добавлю его. Спасибо –
Я видел метод из URLClassLoader, где генерируется исключение. Проверьте обновленный вопрос. –
Когда я запускаю один и тот же проект, он работает, он перестает работать, когда он вызывается классом Plugin. :( –