Codename One:base.res文件在设计器中打开但执行时出错

时间:2018-03-13 10:29:58

标签: codenameone

我的.res文件(base.res)出现严重问题。我正在使用最新的插件并将我的客户端库设置为最新版本。我正在使用Eclipse Oxygen。

我决定将libs从Latest更改为3.7以试图找出我遇到的布局问题。

此时资源文件(base.res)抛出错误,当我调试Resource.class中的代码时,我发现当它加载主题时,其中一个键是一个空字符串(在大约迭代9上)并且它属于以下行,因为它不符合任何其他标准。令人担忧地将客户端库重新切换回最新版本也会引发错误。

         // thow an exception no idea what this is
        throw new IOException("Error while trying to read theme property: " + key);

如果之前发生这种情况,我会回到svn中的先前版本并重新应用我的更改 - 繁琐但有效 - 我把它归结为一次性偏差。

现在当我从subversion中取出29Dec的版本时,加载.res文件时出现意外的EOF错误。 svn版本在提交时都是正确的,因为它是由我们的QA测试和签署的。可能的上一组lib和插件。

文件(两者)在设计器中正确打开,我尝试复制主题并重新保存res文件。一切都没有用。

就XML团队模式而言,我永远无法在eclipse中找到XML文件,因此我安装了netbeans并打开了res文件,并在启用XML团队模式的情况下重新保存,而我可以看到在图像中,文件base.xml是空的 - 我猜,有些损坏使得创建XML文件失败。

更新

我已将所有源恢复到最后一次检入。库已设置为3.3,所有编译并在我的机器上运行。向服务器提交了一个构建,该构建失败(并非不合理地)说支持的最早的专业版是3.7。

我将lib设置更新为3.7并重新提交了构建版本。我现在在构建步骤执行应用程序时遇到崩溃 - 这是https://s3.amazonaws.com/codenameone-build-response/

中的日志
[EDT] 0:0:0,86 - CREATING DISPLAY MANANAGER - likely start of an app run
[EDT] 0:0:0,91 - Exception: java.lang.NullPointerException - null
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:459)
at com.codename1.ui.util.Resources.loadTheme(Resources.java:1322)
at com.codename1.ui.util.Resources.openFileImpl(Resources.java:303)
at com.codename1.ui.util.Resources.openFile(Resources.java:269)
at com.codename1.ui.util.Resources.<init>(Resources.java:189)
at com.codename1.ui.util.Resources.open(Resources.java:740)
at com.codename1.ui.util.Resources.open(Resources.java:677)
<truncated>
[EDT] 0:0:0,118 - Failed to load base resource file.
[EDT] 0:0:0,118 - Exception: java.io.IOException - null

我错过了从3.3到3.7的某个地方的某些地方,只是不确定是什么。

1 个答案:

答案 0 :(得分:1)

当您使用具有新外观文件的旧客户端库时会发生这种情况。新的皮肤文件使用较新的本机主题,因此当旧的客户端库尝试从皮肤加载主题文件时,它会失败。

有两种解决方案:

  • 使用最新的cn1lib虽然3.8应该足够新。 3.7现在已经很老了(请确保使用Codename One Settings而不是旧的首选项UI)。

  • 使用旧的皮肤文件并手动添加,而不是通过皮肤管理器。由于大多数人已经在3.8,因此对它的需求不大,所以我们没有做任何方便的准备。您可以通过查看https://github.com/codenameone/codenameone-skins/

  • 中的历史记录找到旧皮肤