【问题标题】:Creating own scaffold plugin: metawidget resource loading exception only when run within forge console创建自己的脚手架插件:metawidget 资源加载异常仅在 forge 控制台中运行时
【发布时间】:2012-09-19 07:48:58
【问题描述】:

出于某些原因,我尝试单独重建一个脚手架面插件,但发现了一个非常烦人的错误,我无法解决。

java.lang.NoSuchMethodException: class org.metawidget.inspector.impl.BaseObjectInspectorConfig.setPropertyStyle(ForgePropertyStyle). Did you mean setPropertyStyle(PropertyStyle)?
    at org.metawidget.config.impl.BaseConfigReader$ConfigHandler.classGetMethod(BaseConfigReader.java:1633)

尝试了一些技巧后,查看了metawidget的配置代码,没有找到解决问题的方法。

scaffold setup --scaffoldType customfaces

工作正常,但是

scaffold from-entity com.domain.entity.* --scaffoldType customfaces 

失败。

有人有同样的问题吗?我可以把事情搞砸吗?


更新#1

只有在 Forge 控制台中运行时,资源加载才会失败。 JUnit 测试工作正常。我假设,metawidget 插件资源加载器尝试加载 metawidget-*.xml 不是从新插件,而是从原始脚手架 api 的上下文。

更新#2

问题在于元小部件和伪造关系的深处。我发现如果我直接使用SimpleResourceResolver.openResource(),结果是有效的。但是如果我添加StaticHtmlWidget.setConfig(),结果是Unable to locate com/domain/customfaces/metawidget-entity.xml on CLASSPATH 在第一个write() 调用。我不知道如何解决此问题。

【问题讨论】:

  • 这个问题更有趣,正如我之前提到的,我编写的 Te JUnit 测试运行正常。 getShell().execute("scaffold from-entity com.domain.entity.* --scaffoldType customfaces --overwrite --targetDir /");可能是伪造控制台相关的问题?

标签: java crud jboss-tools seam3 jboss-forge


【解决方案1】:

您可能不止一次包含 Metawidget JAR? Forge 使用 JBoss 模块,所以你必须小心你的类路径是如何构建的。

Metawidget 错误基本上是说“ForgePropertyStyle”不是“PropertyStyle”类型。但是(除非您在 customfaces 中更改了该代码)ForgePropertyStyle 确实扩展了 PropertyStyle。所以你的类路径中必须有两个 PropertyStyles 吗?

【讨论】:

  • 克隆的插件也依赖于 metawidget-all 工件,但如果我将范围从 compile 更改为 test,我无法安装插件。我将ForgePropertyStyle 重命名为CustomFacesPropertyStyle(也是*Config),但例外是相同的:插件引用ForgePropertyStyle(metawidget xml-s 也被修改)。你有什么想法,如何消除这个问题。我完全糊涂了。
  • 问题不是 ForgePropertyStyle/CustomFacesPropertyStyle,因此重命名将无济于事。问题(我认为)是您的类路径上有两个 org.metawidget.inspector.impl.propertystyle.PropertyStyles。您可以尝试 1) 删除默认的脚手架-faces 模块并使用您的自定义模块; 2)查看github.com/forge/plugin-spring-mvc,这是一个与您类似的插件(也使用Metawidget); 3) 在 forge-dev@lists.jboss.org 上提出这个问题
  • 问题还是没有解决。我理解你的回答,类路径中有两个 metawidget-all jar,但我无法修复它:我可能没有足够的 mavan 技能。 :(1) 不是公认的灵魂。 2)我检查了它,但没有发现任何区别,如何依赖metawidget模块。 (当我尝试时,这个模块在当前状态下是错误的) 3)仍然没有尝试它,我希望任何人都可以在这里提供帮助。我认为这是一个与 Maven 相关的问题,所以我一直在阅读和尝试:)
  • 当我尝试 plugin-spring-mvc 时,由于其他原因仍然不适合我。
  • 最后我试试你说的第一个建议。删除原来的 faces 插件,我确认不是重复导致问题。 metawidget 的SimpleWidgetResolver.openResource 无法加载资源。当我将命令作为 forge 中的 forge 插件运行时,存在问题。如果我在 junit 测试中运行命令(使用getShell.execute),资源会正确加载,并且插件也会运行。
猜你喜欢
  • 2014-05-19
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2011-07-12
  • 2011-04-29
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多