我正在开发一些自定义屏幕和自定义操作,并希望以与添加“创建程序组”屏幕建议添加“创建程序组”操作相同的方式在它们之间创建关联。
所以我有一个屏幕,并想将一个动作与它相关联。该操作应放置在安装屏幕上。在屏幕 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)