【问题标题】:How can I override a class in J2ME Polish binaries?如何覆盖 J2ME 波兰语二进制文件中的类?
【发布时间】:2008-10-26 10:25:09
【问题描述】:

我正在使用来自 J2ME Polish 的 UI 组件。我在代码中发现了一个简单的错误,并想快速修复它,但在下载包中找不到任何构建脚本,尽管包含源代码。

该问题无法通过扩展类来解决,因为它涉及具有私有访问权限的成员。

我应该如何修复它?我应该简单地用 Javac 编译有问题的类,还是应该尝试在他们的存储库中找到构建脚本?

【问题讨论】:

    标签: java-me j2mepolish


    【解决方案1】:

    J2MEPolish UI 库没有二进制代码,因为这些类也在您的应用程序编译期间进行了预处理。这就是为什么 J2MEPolish UI 部分也没有构建脚本的原因 - 生成的二进制文件,如果它编译,将没有任何意义 :)

    如果您直接使用此 UI 类(不涉及波兰魔法),我建议将其复制到您自己的项目中,在那里进行更改,您应该就可以了。

    但是有一个小问题。我不是 100% 确定,但是波兰语构建过程应该如下:首先你的类被预处理,然后波兰语类将被预处理。如果您复制到项目中的 UI 组件将保留在同一个 java 包中,则您的更改可能会被有缺陷的波兰实现覆盖。您可以通过运行应用程序或查看构建目录中的最终 java 代码来检查它。

    如果发生覆盖问题,那么您有两个选择 - 将项目中的 UI 类移动到不同的包中(我 99% 确定如果您直接使用它应该没问题)或者您需要修改波兰构建过程,这样它就会首先预处理波兰语类,然后您可以覆盖它所做的更改。

    /JaanusSiim

    【讨论】:

    • 谢谢詹纳斯。你的解释很有道理。我将尝试您的解决方案,并让大家了解情况。
    • 本课涉及波兰语预处理。我已经尝试过不同的包想法,但由于依赖于暴露包私有成员的其他类而陷入困境。
    • 是用波兰语预处理导入还是直接使用?无论如何 - 看起来你最好的选择应该是改变波兰构建处理。这应该不会太难。
    • 我尝试了这个想法,它奏效了。只需将带有错误的类复制到我项目的原始包下的源文件夹中。修复了错误并在项目上进行了润色。谢谢
    【解决方案2】:

    我知道这个问题已经得到回答和接受,但更简单的方法是使用他们的内置属性(对于任何通过魔法搜索引擎来到这里的人)

    polish.client.source=/projecthome/j2me-polish-source
    

    这只是与安装程序一起打包的源代码的副本。您可以将其复制到自己的源代码树中,从而获得更改的版本历史记录。

    虽然 JaanusSiim 的方法可能有效,但我不推荐它,因为在您自己的源代码树中包含 de.enough.** 包会让人感到困惑,我通常为我的个人源代码创建一个 src,为他们的源文件创建一个 src-j2mepolish这就是我在标准版本中添加的非常明确的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多