Я использую Rhino для создания сценария приложения Eclipse (RCP). Проблема в том, что из Javascript у меня есть доступ только к классам, доступным для плагина, который предоставляет Rhino, а не ко всем классам, доступным для плагина, который запускает сценарии.
Очевидным ответом будет включение Rhino в плагин скриптинга, но это не работает, потому что он уже предоставлен одним из собственных плагинов приложения (который также предоставляет вещи, которые мне нужны для скриптов), и Eclipse всегда использует эту версию вместо версии ближе к руке.
- Есть ли способ изменить загрузчик классов, используемый Rhino
- или возможно ли гарантировать, что Eclipse загружает классы Rhino из одного плагина, а не из другого?
Благодаря ответу Тило я использовал это:
import net.weissmann.tom.rhino.Activator; // Plugin activator class
import org.mozilla.javascript.tools.shell.Main;
public class JSServer extends Thread {
//[...]
public void run() {
// recent versions of the Main class kindly export
// the context factory
Main.shellContextFactory.initApplicationClassLoader(
Activator.class.getClassLoader()
) ;
//[...]
}