Codenameone 代码名1:base.res文件在设计器中打开,但执行时出错

Codenameone 代码名1:base.res文件在设计器中打开,但执行时出错,codenameone,Codenameone,我的.res文件(base.res)有严重问题。我正在使用最新的插件,并将客户端libs设置为最新。我用的是Eclipse氧气 我决定将libs从最新版本切换回3.7版本,以确定我遇到的布局问题 此时资源文件(base.res)抛出一个错误,当我调试resource.class中的代码时,我发现当它加载主题时,其中一个键是空字符串(在大约迭代9中),它落在下面一行,因为它不满足任何其他条件。令人担忧的是,将客户机LIB切换回最新版本也会引发错误 // thow an excep

我的.res文件(base.res)有严重问题。我正在使用最新的插件,并将客户端libs设置为最新。我用的是Eclipse氧气

我决定将libs从最新版本切换回3.7版本,以确定我遇到的布局问题

此时资源文件(base.res)抛出一个错误,当我调试resource.class中的代码时,我发现当它加载主题时,其中一个键是空字符串(在大约迭代9中),它落在下面一行,因为它不满足任何其他条件。令人担忧的是,将客户机LIB切换回最新版本也会引发错误

         // 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签署。可能是以前的一组libs和插件

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

就XML团队模式而言,我永远无法在eclipse中找到XML文件,因此我安装了netbeans并在其中打开了res文件,并在启用XML团队模式的情况下重新保存,-虽然我可以看到对图像的引用,但file base.XML是空的-我想,一些损坏导致创建XML文件失败

更新

我已将所有源代码恢复到上次签入。libs被设置为3.3,并在我的机器上编译和运行。向服务器提交了一个构建,但该构建失败(并非不合理),表示支持的最旧pro版本是3.7

我将lib设置更新为3.7并重新提交了构建。现在,当构建步骤执行应用程序时,我遇到了一个崩溃-这是在

[EDT]0:0:0,86-创建显示管理器-可能开始应用程序运行
[EDT]0:0:0,91-异常:java.lang.NullPointerException-null
java.lang.NullPointerException
位于java.util.Hashtable.put(Hashtable.java:459)
位于com.codename1.ui.util.Resources.loadTheme(Resources.java:1322)
位于com.codename1.ui.util.Resources.openFileImpl(Resources.java:303)
位于com.codename1.ui.util.Resources.openFile(Resources.java:269)
位于com.codename1.ui.util.Resources。(Resources.java:189)
位于com.codename1.ui.util.Resources.open(Resources.java:740)
位于com.codename1.ui.util.Resources.open(Resources.java:677)
[EDT]0:0:0118-加载基本资源文件失败。
[EDT]0:0:0118-异常:java.io.IOException-null

在从3.3到3.7的过程中,我遗漏了一些东西,只是不确定是什么

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

有两种解决方案:

  • 使用最新的cn1lib,尽管3.8应该足够新。3.7现在已经很旧了(请确保使用Codename One设置,而不是旧的首选项UI)

  • 使用旧的外观文件并手动添加,而不是通过外观管理器添加。因为大多数人已经在3.8上了,所以没有太多的需求,所以我们没有准备任何方便的东西。你可能会通过浏览历史发现一个旧皮肤


什么是
res
文件?它们是IDE的配置文件吗?它们是特定于用于存储UI样式资源和资产的Codename One(AFAIK-它们不是通用格式)的文件。
[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