eclipse-plugin - 使用 Rhino : classloader belongs to the plugin providing Rhino, 编写 Eclipse 脚本,而不是使用它的插件

标签 eclipse-plugin eclipse-rcp rhino eclipse-pde

我正在使用 Rhino 编写 Eclipse (RCP) 应用程序的脚本。问题是,从 Javascript 中,我只能访问提供 Rhino 的插件可用的类,而不能访问运行脚本的插件可用的所有类。

显而易见的答案是将 Rhino 放在脚本插件中,但这不起作用,因为它已经由应用程序自己的插件之一提供(它也提供了我需要编写脚本的东西)并且 Eclipse 总是使用这个版本而不是版本更接近手。

  • 有没有办法改变 Rhino 使用的类加载器
  • 或者是否可以确保 Eclipse 从一个插件而不是另一个插件加载 Rhino 类?

  • 感谢 Thilo 的回答,我使用了这个:

    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()    
                ) ;
    
            //[...]
        }
    

    最佳答案

    Is there a way to change the classloader used by Rhino



    Rhino 应该使用当前线程的 ContextClassLoader。试试 Thread.setContextClassLoader (不要忘记恢复它)。

    如果这不起作用,也许你可以 create your own Rhino ContextFactory :

    public final void initApplicationClassLoader(java.lang.ClassLoader loader)

    Set explicit class loader to use when searching for Java classes.

    关于eclipse-plugin - 使用 Rhino : classloader belongs to the plugin providing Rhino, 编写 Eclipse 脚本,而不是使用它的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220604/

    相关文章:

    android - App Engine Connected Android 向导在出现 RuntimeException 时停止

    java - 从 eclipse-jee-helios 创建 RCP 项目时遇到问题

    java - Rhino 在 java 中设置 NativeObject 属性

    java - 如何将 Java 类中的静态方法导入到在 Rhino 中运行的 JS 中?甲骨文实现

    java - 获取 javascript 对象的字段值

    eclipse-rcp - 为 Eclipse 更新站点项目中的插件定义自动启动

    eclipse - 在 Eclipse 中构建 NodeJs 应用程序

    java - 如何贡献 Action 与 Eclipse 中的菜单进行比较

    dependency-injection - eclipse rcp/e4 中的平台服务在哪里?

    java - 将 IUndoableOperation 添加到我的 EditorPart 时出现上下文问题