首页 > 解决方案 > Theme 在启动时导入图像文件中的所有图像,并通过 netbeans 减慢项目的运行速度。如何避免?

问题描述

很棒的工具,感谢您花费大量时间和精力!我注意到在启动 Designer 时尝试删除未使用的图像:一旦 Designer 启动,但仍在加载主题,我可以选择启动其界面(列表)的“删除未使用的图像”。但是,如果我让主题加载,则删除未使用的图像列表将不会出现。加载主题后,它将填充图像,所有选择器名称都为“import-############”所以主题正在使用这些图像......即使我不打算.我已经在 Gui Builder 中设计了所有的界面布局。如果我删除这些“import-############”文件之一并保存然后尝试运行项目,项目最终会运行(模拟器启动前 10 分钟以上)但不断给出以下信息:警告:使用 EncodedImage.create(InputStream) 加载大图像可能会导致内存问题,请尝试使用 EncodedImage.create(InputStream, int)。如果我启动设计器并允许加载主题(大约 2-3 分钟)并单击保存然后尝试运行项目,那么这个诊断会更进一步,所以什么都不删除,我会收到相同的错误消息。所以在我看来,当我启动 Designer 时,它会导入这些图像,然后导致错误/警告。那么有没有办法避免这种图像导入并删除不需要的图像?相反,如果我不启动 Designer,而是直接在 Netbeans 中运行该项目。我没有收到错误/警告,并且项目在模拟器中启动的速度要快得多。对于这些场景中的每一个,我都复制了一个新的项目文件夹,然后启动了 netbeans。这个文件夹,项目不会有之前启动的设计器。

Re Shai 5 月 26 日的评论

因此,当我删除图像和两个“theme.res”文件时,项目无法运行并生成以下输出:

Generating GUI sources
timeStr=1.0.0-1589639113000-1588429678000, lastTime=1.0.0-1589639113000-1588429678000
CIMenus.java unmodified, skipping
timeStr=1.0.0-1588250408000-1588255873000, lastTime=1.0.0-1588250408000-1588255873000
SplashForm.java unmodified, skipping
timeStr=1.0.0-1589730011000-1589485802000, lastTime=1.0.0-1589730011000-1589485802000
PractiseArea.java unmodified, skipping
timeStr=1.0.0-1588621870000-1588255973000, lastTime=1.0.0-1588621870000-1588255973000
Login.java unmodified, skipping
timeStr=1.0.0-1588507007000-1588506037000, lastTime=1.0.0-1588507007000-1588506037000
CISpaceInvader.java unmodified, skipping
timeStr=1.0.0-1589637149000-1588621944000, lastTime=1.0.0-1589637149000-1588621944000
LessonPlayer.java unmodified, skipping
init:
Deleting: /Users/andrew/netbeans-workspace/CrackinIt/build/built-jar.properties
deps-jar:
Updating property file: /Users/andrew/netbeans-workspace/CrackinIt/build/built-jar.properties
JavaFX is loaded
Retina Scale: 2.0
Updating merge file /Users/andrew/netbeans-workspace/CrackinIt/css/theme.css.merged
Input: /Users/andrew/netbeans-workspace/CrackinIt/css/theme.css
Output: /Users/andrew/netbeans-workspace/CrackinIt/src/theme.res
Acquiring lock on CSS checksums file /Users/andrew/netbeans-workspace/CrackinIt/.cn1_css_checksums...
Lock obtained
An error occurred while updating resources for UIID import-1588534357646.  Processing property bgImage
Releasing lock
java.lang.RuntimeException: java.io.FileNotFoundException: /Users/andrew/netbeans-workspace/CrackinIt/css/images/Button1-7.png (No such file or directory)
    at com.codename1.designer.css.CSSTheme.getBackgroundImage(CSSTheme.java:2310)
    at com.codename1.designer.css.CSSTheme.getBackgroundImages(CSSTheme.java:1981)
    at com.codename1.designer.css.CSSTheme.updateResources(CSSTheme.java:1678)
    at com.codename1.designer.css.CN1CSSCLI.compile(CN1CSSCLI.java:535)
    at com.codename1.designer.css.CN1CSSCLI.main(CN1CSSCLI.java:390)
    at com.codename1.designer.ResourceEditorApp.main(ResourceEditorApp.java:556)
Caused by: java.io.FileNotFoundException: /Users/andrew/netbeans-workspace/CrackinIt/css/images/Button1-7.png (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
    at java.net.URL.openStream(URL.java:1045)
    at com.codename1.designer.css.CSSTheme.getBackgroundImage(CSSTheme.java:2258)
    ... 5 more
/Users/andrew/netbeans-workspace/CrackinIt/build.xml:628: Java returned: 1
BUILD FAILED (total time: 4 seconds)

当我从“build”文件夹中删除图像和“theme.res”文件时,项目在项目查看器中使用“theme.res”(res)文件启动,项目运行。如果我启动 res 文件并允许它加载主题然后保存并退出设计器,则项目运行。

但是,如果我启动 res 文件并允许它加载主题然后删除未使用的图像之一,保存并退出设计器,“theme.res”文件将从项目查看器中消失。尝试运行项目时,它现在提供以下内容:

ant -f /Users/andrew/netbeans-workspace/CrackinIt -Dnb.internal.action.name=run run
Generating GUI sources
timeStr=1.0.0-1589639113000-1588429678000, lastTime=1.0.0-1589639113000-1588429678000
CIMenus.java unmodified, skipping
timeStr=1.0.0-1588250408000-1588255873000, lastTime=1.0.0-1588250408000-1588255873000
SplashForm.java unmodified, skipping
timeStr=1.0.0-1589730011000-1589485802000, lastTime=1.0.0-1589730011000-1589485802000
PractiseArea.java unmodified, skipping
timeStr=1.0.0-1588621870000-1588255973000, lastTime=1.0.0-1588621870000-1588255973000
Login.java unmodified, skipping
timeStr=1.0.0-1588507007000-1588506037000, lastTime=1.0.0-1588507007000-1588506037000
CISpaceInvader.java unmodified, skipping
timeStr=1.0.0-1589637149000-1588621944000, lastTime=1.0.0-1589637149000-1588621944000
LessonPlayer.java unmodified, skipping
init:
Deleting: /Users/andrew/netbeans-workspace/CrackinIt/build/built-jar.properties
deps-jar:
Updating property file: /Users/andrew/netbeans-workspace/CrackinIt/build/built-jar.properties
JavaFX is loaded
Retina Scale: 2.0
Updating merge file /Users/andrew/netbeans-workspace/CrackinIt/css/theme.css.merged
Input: /Users/andrew/netbeans-workspace/CrackinIt/css/theme.css
Output: /Users/andrew/netbeans-workspace/CrackinIt/src/theme.res
Acquiring lock on CSS checksums file /Users/andrew/netbeans-workspace/CrackinIt/.cn1_css_checksums...
Lock obtained
/Users/andrew/netbeans-workspace/CrackinIt/src/theme.res has been modified since it was last compiled.  Making copy at /Users/andrew/netbeans-workspace/CrackinIt/css/.backups/theme.res.1590562229494.bak
An error occurred while updating resources for UIID import-1588534357646.  Processing property bgImage
Releasing lock
java.lang.RuntimeException: java.io.FileNotFoundException: /Users/andrew/netbeans-workspace/CrackinIt/css/images/Button1-7.png (No such file or directory)
    at com.codename1.designer.css.CSSTheme.getBackgroundImage(CSSTheme.java:2310)
    at com.codename1.designer.css.CSSTheme.getBackgroundImages(CSSTheme.java:1981)
    at com.codename1.designer.css.CSSTheme.updateResources(CSSTheme.java:1678)
    at com.codename1.designer.css.CN1CSSCLI.compile(CN1CSSCLI.java:535)
    at com.codename1.designer.css.CN1CSSCLI.main(CN1CSSCLI.java:390)
    at com.codename1.designer.ResourceEditorApp.main(ResourceEditorApp.java:556)
Caused by: java.io.FileNotFoundException: /Users/andrew/netbeans-workspace/CrackinIt/css/images/Button1-7.png (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
    at java.net.URL.openStream(URL.java:1045)
    at com.codename1.designer.css.CSSTheme.getBackgroundImage(CSSTheme.java:2258)
    ... 5 more
/Users/andrew/netbeans-workspace/CrackinIt/build.xml:628: Java returned: 1
BUILD FAILED (total time: 3 seconds)

未使用的图像文件不在项目文件夹中

标签: imagecodenameonedesigner

解决方案


这永远不会为你工作。

使用 CSS 后,设计器仅对查看生成的文件有用。但是由于 CSS 会重新生成资源文件,因此您所做的任何更改都将被丢弃。您需要从 CSS 图像目录中手动删除不再使用的图像,然后物理删除 res 文件以确保它是从头开始重新生成的。


推荐阅读