1

我正在开发一些自定义屏幕和自定义操作,并希望以与添加“创建程序组”屏幕建议添加“创建程序组”操作相同的方式在它们之间创建关联。

所以我有一个屏幕,并想将一个动作与它相关联。该操作应放置在安装屏幕上。在屏幕 bean 信息类中,我在构造函数中添加了以下行:

setAssociatedAction(MyAction.class.getName(), InstallationScreen.class.getName());

这似乎没有任何作用。我重新编译,并将屏幕重新添加到安装程序,但它没有提示我添加操作。我尝试将相同的设置添加到操作的构造函数中,认为可能两者都需要相互创建关联才能工作:

setAssociatedScreen(MyScreen.class.getName());
setInstallerTargetScreen(InstallationScreen.class.getName());

它也没有帮助。我什至尝试通过创建操作来执行相反的操作,以查看它是否也请求创建屏幕,但没有运气。幸运的是,设置安装程序目标屏幕按预期工作。

我也尝试过以下方法:

  • 类名的简单和规范名称。
  • bean 信息类,以防万一。

我不确定我做错了什么,如果我做错了什么。该文档没有回避任何其他依赖项:

希望这不是一个错误。

提前致谢!

编辑:

我正要解决这个问题,但只是作为 install4j 的扩展。我在 BeanInfo 中指定 Bean 类时使用了错误的类。

我有:

public MyActionBeanInfo() {
      super("Title", "Description", "Category", false, true, null, MyActionBeanInfo.class);
}

代替:

public MyActionBeanInfo() {
      super("Title", "Description", "Category", false, true, null, MyAction.class);
}

作为一个小的增强,如果它不是有效的 Bean 类,是否可以从超级构造函数中抛出异常,也许是 IllegalArgumentException?

但!

当不用作扩展时,我仍然收到 ClassNotFound 和 NullPointer 异常。

这是堆栈跟踪:

java.lang.ClassNotFoundException: com.geowareinc.util.installer.actions.MyAction
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.install4j.gui.views.installer.d.g.a(ejt:92)
    at com.install4j.gui.views.installer.i.b.a(ejt:41)
    at com.install4j.gui.views.installer.i.b.a(ejt:31)
    at com.install4j.gui.views.installer.i.b.a(ejt:18)
    at com.install4j.gui.views.installer.d.h.a(ejt:34)
    at com.install4j.gui.views.installer.d.h.call(ejt:32)
    at com.install4j.gui.views.installer.d.ax.a(ejt:1238)
    at com.install4j.gui.views.installer.d.g.a(ejt:32)
    at com.install4j.gui.views.installer.b.h.a(ejt:388)
    at com.install4j.gui.views.installer.d.ax.f(ejt:691)
    at com.install4j.gui.views.installer.d.bd.actionPerformed(ejt:540)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
    at sun.reflect.misc.ReflectUtil.checkPackageAccess(Unknown Source)
    at sun.reflect.misc.ReflectUtil.isPackageAccessible(Unknown Source)
    at java.beans.Introspector.getBeanInfo(Unknown Source)
    at com.install4j.gui.views.installer.d.g.b(ejt:60)
    at com.install4j.gui.views.installer.i.b.a(ejt:73)
    at com.install4j.gui.views.installer.i.b.a(ejt:53)
    at com.install4j.gui.views.installer.i.b.a(ejt:31)
    at com.install4j.gui.views.installer.i.b.a(ejt:18)
    at com.install4j.gui.views.installer.d.h.a(ejt:34)
    at com.install4j.gui.views.installer.d.h.call(ejt:32)
    at com.install4j.gui.views.installer.d.ax.a(ejt:1238)
    at com.install4j.gui.views.installer.d.g.a(ejt:32)
    at com.install4j.gui.views.installer.b.h.a(ejt:388)
    at com.install4j.gui.views.installer.d.ax.f(ejt:691)
    at com.install4j.gui.views.installer.d.bd.actionPerformed(ejt:540)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
4

1 回答 1

1

这是 install4j 中的一个错误。如果在 Installer->Custom code & Resources 选项卡上添加 bean,则无法加载关联的屏幕和操作。

这将在 5.1.7 中修复。

于 2013-11-06T09:58:20.730 回答