Я использую функцию HotSwap javassist, для этого требуется tools.jar в пути к классам, поэтому я добавил -cp tools.jar
, когда начал использовать приложение OSGi. Но когда я new HotSwap()
в коде одного из пучков,Я уже добавил tools.jar в classpath, почему все еще java.lang.NoClassDefFoundError: com.sun.jdi.Bootstrap throw?
java.lang.NoClassDefFoundError: com.sun.jdi.Bootstrap
был брошен. com.sun.jdi.Bootstrap
находится в tools.jar и я уже добавил его в пути к классам, а также я проверил это сработало, потому что если нет, то следующий код не будет работать:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
загрузчик классы из HotSwapper не может загрузить класс com.sun.jdi.Bootstrap
? Тогда почему он корректно работает в моей среде Eclipse? (Я добавил tools.jar в библиотеки Build path)
О том, почему NoClassDefFoundError оценивается.
osgi имеет концепцию «среды исполнения», которая представляет собой список пакетов. Ваша инфраструктура osgi не позволит вам получить что-то, что связано с системным пакетом. –
Запуск в Eclipse немного отличается, затмение - это больше relex, потому что ему нужны все эти вещи для разработчиков. –
@ J-16 SDiZ спасибо, но как я могу получить к нему доступ? Потому что 'HotSwapper' нуждается в этом. – JerryCai