• 模块暴露接口发现的问题


    问题描述:

    在《NetBeans Platform 6.9 Developer's Guide》第二章末尾有一步将自己设计的Panel加入Palette中,以方便使用。但在按书中所写加入,在定位到TaskEditor模块后,却找不到TaskEditorPanel。结果发现TaskEditorPanel.java中有这样一句

    private Task task = new TaskImpl();

    而在TaskModel模块中只暴露了com.netbeansrcp.taskmodel.api包,而没有暴露com.netbeansrcp.taskmodel这个实现类TaskImpl所在的包。(其实这个包确实不应该暴露,书后面部分给出了解决方法,但行文至此,必须暴露这个包才能编译通过)

    这样,在编辑TaskEditorPanel.java文件时是不会提示错误的,而在build会报错。

    而在没有build的情况下,要将TaskEditorPanel加入Palette中,就会发现找不到而无法加入。

    临时的解决方法就是将com.netbeansrcp.taskmodel暴露出来,并build,然后在加入就可以找到了。

    当然最终的解决方式还是令TaskEditor模块不要依赖TaskImpl。

     ___________________________________________________________

    又出问题了,在按书中所讲,将

    private Task task = new TaskImpl();

    改为

    public Task task = new TaskImpl();

    后,TaskEditorTopComponent设计面板无法显示。

    而且Palette面板上新增加的项目也报有问题。

    各种办法不起作用,谁知道怎么回事啊?

     -----------------------------------------------------------------------------

    书中前后有矛盾的地方,看书的时候要注意,例如:

    20页中有

    Create a subpackage named api and define the Task interface as follows...

    92页又有

    Move the Task class to the com.netbeansrcp.taskmodel.api too...

    另外包名有时候是com.netbeansrcp,有时候又变成org.netbeansrcp

    -------------------------------------------------------------------------------

     
    http://www.iteye.com/problems/67224

    原因是这样子的:
    TaskImpl中的构造方法中有这么一段代码:
    TaskIdGenerator idGen = Lookup.getDefault().lookup(com.netbeansrcp.taskidgenerator.api.TaskIdGenerator.class);
    this.id = idGen.generateID();

    在界面设计器中打开时,由于在TaskEditorPanel中需要调用该构造方法,此时NetBeans不能正确的使用LookUp方法查找到对应的TaskIdGenerator,所以报了NullPointerException。

    通过View->IDE Log可以查看到报错的具体信息。

     

  • 相关阅读:
    CentOS 7 iSCSI 多路径Multipath配置
    Centos7 GRE Tunnel
    ESXi开启虚拟化
    ownCloud 10.2.1搭建云盘服务器
    cinder不同类型volume转换
    linux的bond及子接口配置
    openstack 平台添加vGPU
    ownCloud 10.2.1搭建云盘服务器
    openstack nova 热迁移问题
    bugku-web40对git命令的使用
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2134868.html
Copyright © 2020-2023  润新知