Understood. It's a pretty simple skin, anyway - just extends mx.skins.halo.LinkButtonSkin and overrides *updateDisplayList* to make some graphics calls (at one point it checks parent.tabIndex, which is where the NPE occurs).
I created a copy of the default flex-config and moved the contents of the library-path to external-library-path (except for the player reference in library path) [1]. I think there must be another step I am missing, because now the application fails to load: Loading library VerifyError: Error #1014: Class mx.core::Application could not be found. at flash.display::MovieClip/nextFrame() at mx.managers::SystemManager/deferredNextFrame()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/SystemManager.as:286] at mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/SystemManager.as:2635] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.preloaders::Preloader/timerHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/preloaders/Preloader.as:523] at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() Sorry for the back and forth. Hoping there's an easy solution just over the horizon =) [1] http://pastebin.com/EAkZDUkW On Wed, Apr 17, 2013 at 12:56 PM, Alex Harui <[email protected]> wrote: > Hi Michael, > > Attachments aren't supported on the mailing list. The warning could be > related. It is probably best to specify dependent swcs via > external-library-path and make sure all of those swcs or rsls are otherwise > in the application. > > > On 4/17/13 12:20 PM, "Michael Baird" <[email protected]> wrote: > > > Thanks for helping with this, Alex. I think I'm getting a little closer. > I've > > switched to using mxmlc/compc AntTasks and I can load the main > application and > > the submodules now. > > > > I have, however, some Flex 3 skin(s) that seem to be failing at runtime. > > Unlike before, this happens with the ant-built application as well as the > > FlashBuilder-built application. I've attached my skin, which is throwing > a NPE > > at line 41, implying parent is null. I've tried checking for parent == > null > > and returning, and I also wrapped the whole thing in a try/catch, but > the same > > error keeps getting thrown. > > > > In dealing with this skin issue, I've tried > adding isolate-styles=false as > > well > > > as runtime-shared-library-settings.application-domain application-domain-targe > > t="top-level" for all my custom libraries, to no apparent effect. > > > > I generated a link-report for my style resource SWF and it does include > a link > > to the LinkButtonSkin, so I think that's okay. > > > > When compiling the libraries, I do get this interesting warning (it is > > repeated for SDK mx.swc and charts.swc), that may or may not be related. > It's > > coming from the flex-config xml. > > [compc] Warning: The swc > > 'C:\Apache\Flex\4.9.1\frameworks\libs\framework.swc' has style defaults > and is > > in the library-path, which means dependencies will be linked in without > the > > styles. This can cause applications, which use the output swc, to have > > missing skins. The swc should be put in the external-library-path. > > > > Any thoughts here are much appreciated. > > > > > > On Tue, Apr 16, 2013 at 8:22 PM, Alex Harui <[email protected]> wrote: > >> From that output, if I'm interpreting it correctly, core.swc loads, then > >> common.swc. Common.swc seems to have a dependency on Button, which > hasn't > >> been loaded yet since only core has been loaded. > >> > >> Should common.swc have a dependency on Button? If so, you will need to > load > >> mx.swc beforehand. I think the compiler/linker is smart enough not to > >> request loading of RSLs that aren't used by the application. But then > if > >> your custom RSL needs Button the compiler/linker doesn't know that. > >> > >> > >> On 4/16/13 5:06 PM, "Michael Baird" <[email protected]> wrote: > >> > >>> I've analyzed the link-report and also checked out the catalog XML. > >>> > >>> The main library, which gets compiled as core.swc and then treated as > an > >>> external-library (+ rsl) by all the other targets, has a catalog.xml > that > >>> contains references to mx.controls:Button. I had the main application > >>> target generate a link-report and that also contains references to the > >>> mx.controls:Button class. > >>> > >>> So the linkage "appears" to be correct according to these reports. > >>> > >>> I tried to change the main application target to use > >>> -library-path+=core.swc instead of -external-library-path, but that > >>> resulted in no change. > >>> > >>> Fun fact: I added a custom debug config to FlashBuilder and launched > the > >>> application. Here's the console result: > >>> > >>> [SWF] C:\<path>\oneplace_client.swf - 1,869,468 bytes after > decompression > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> Loading library > >>> [SWF] /core.swf - 1,612,732 bytes after decompression > >>> Loading library > >>> Loaded library 0 of 5 > >>> Loading library > >>> [SWF] /common.swf - 1,203,976 bytes after decompression > >>> VerifyError: Error #1014: Class mx.controls::Button could not be found. > >>> > >>> Could I be missing a step to generate a valid RSL for the libraries > (e.g. > >>> addressing the *VerifyError*)? Here is my *core* library target: > >>> <java jar="${compc.jar.path}" > >>> failonerror="true" > >>> fork="true"> > >>> <jvmarg value="-Xmx512m"/> > >>> <arg value='-debug=${debug}'/> > >>> <arg > >>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/> > >>> <arg value='-load-config=${flex.config}'/> > >>> <arg > >>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/> > >>> <arg value='-source-path+=${lib.core}'/> > >>> <arg value='-include-sources=${lib.core}'/> > >>> <arg value='-output=${build.dir}/core.swc'/> > >>> </java> > >>> > >>> Then the main application target: > >>> <java jar="${mxmlc.jar.path}" > >>> failonerror="true" > >>> fork="true"> > >>> <jvmarg value="-Xmx512m"/> > >>> <arg value='-debug=${debug}'/> > >>> <arg > >>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/> > >>> <arg value='-load-config=${flex.config}'/> > >>> <arg > >>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/> > >>> <arg value='-runtime-shared-libraries=${core.swf}'/> > >>> <arg value='-external-library-path=${build.dir}/core.swc'/> > >>> <arg value='-runtime-shared-libraries=${common.swf}'/> > >>> <arg > value='-external-library-path=${build.dir}/common.swc'/> > >>> <arg > >>> value='-runtime-shared-libraries=${swiz-framework-v1.4.0.swf}'/> > >>> > >>> <!-- CampaignWrapper Libs BEGIN --> > >>> <arg > value='-runtime-shared-libraries=${campaign_common.swf}'/> > >>> <arg > >>> value='-external-library-path+=${build.dir}/campaign_common.swc'/> > >>> <arg > value='-runtime-shared-libraries=${synchronization.swf}'/> > >>> <arg > >>> value='-external-library-path=${build.dir}/synchronization.swc'/> > >>> <arg value='-source-path+=${lib.campaign}'/> > >>> <!-- CampaignWrapper Libs END --> > >>> > >>> <arg value='-file-specs=${app.main}/${client.name > >>> <http://client.name> }.mxml'/> > >>> <arg value='-output=${build.dir}/${client.name > >>> <http://client.name> }.swf'/> > >>> <arg value='-link-report=${build.dir}/report.xml'/> > >>> </java> > >>> > >>> (Note: those are all custom SWCs I'm treating as > RSLs/external-libraries. > >>> The Flex ones are loaded - or supposed to be loaded - through the > >>> -load-config argument.) > >>> > >>> Any further ideas are greatly appreciated! > >>> > >>> > >>> > >>> On Tue, Apr 9, 2013 at 12:22 PM, Michael Baird <[email protected]> > wrote: > >>> > >>>> I'll check out the link-report and see what's going on. The main > >>>> application MXML target is generating one, which is used for the > modules > >>>> through load-externs. > >>>> > >>>> The externals indicated by the module target I provided are some of > our > >>>> common libraries that are built as SWCs earlier in the script. The > Flex > >>>> ones are only included through flex-config. > >>>> e.g. > >>>> <java jar="${compc.jar.path}" > >>>> failonerror="true" > >>>> fork="true"> > >>>> <jvmarg value="-Xmx512m"/> > >>>> <arg value='-debug=${debug}'/> > >>>> <arg > >>>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/> > >>>> <arg > >>>> value='-load-config=${FLEX_HOME}/frameworks/flex-config.xml'/> > >>>> <arg > >>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/> > >>>> <arg > value='-external-library-path+=${build.dir}/core.swc'/> > >>>> <arg value='-runtime-shared-libraries=${core.swf}'/> > >>>> <arg value='-source-path+=${lib.common}'/> > >>>> <arg value='-include-sources=${lib.common}'/> > >>>> <arg value='-output=${build.dir}/common.swc'/> > >>>> </java> > >>>> > >>>> (core being another of our libraries) > >>>> > >>>> > >>>> On Tue, Apr 9, 2013 at 12:12 PM, Alex Harui <[email protected]> wrote: > >>>> > >>>>> > >>>>> > >>>>> > >>>>> On 4/9/13 10:41 AM, "Michael Baird" <[email protected]> wrote: > >>>>> > >>>>>> Okay, I understand the Sprite issue might be something wrong with > our > >>>>>> resource builder (yes, embedded assets and css compiled into a > resource > >>>>> SWF > >>>>>> so I'll look for misconfigurations there). > >>>>>> > >>>>>> Shouldnt mx.controls.Button be included through the standard > >>>>> flex-config or > >>>>>> is that getting messed up because of the module externals? > >>>>> Flex-config directs compile-time. It must be "ok" since you are > getting > >>>>> SWFs and then run-time errors. It is options like > -external-library-path > >>>>> that cause the linker to exclude classes, which is what you want, > but then > >>>>> you have to make sure they get loaded and loaded correctly. > >>>>>> > >>>>>> Do you happen to know what/how this changed from 4.1 to now? This > same > >>>>>> build script is working with SDK 4.1.0. > >>>>> I don't know off-hand. It is possible that we got better at not > requiring > >>>>> mx components in spark apps. A link-report will tell you what > classes are > >>>>> ending up where. > >>>>> > >>>>> BTW, did you obfuscate the SWC names? I don't recognize common and > >>>>> charting > >>>>> as Flex SWCs. If you custom built these SWCs then there might be an > issue > >>>>> with what classes are in it. A SWC is a zip file and in it is a > >>>>> catalog.xml > >>>>> which is like a link-report: it tells you which classes are in the > SWC. > >>>>>> > >>>>>> > >>>>>> On Mon, Apr 8, 2013 at 9:16 PM, Alex Harui <[email protected]> > wrote: > >>>>>> > >>>>>>> The -external-library-path options are forcing certain classes to > not > >>>>> be > >>>>>>> linked into the SWF, but those classes are not being loaded into > the > >>>>>>> ApplicationDomain tree in a way that SWF can access it or aren't > being > >>>>>>> loaded at all. > >>>>>>> > >>>>>>> The XXXX_flash.display_Sprite class is probably an embedded asset > and > >>>>> not > >>>>>>> an > >>>>>>> actual Flash Player class. > >>>>>>> > >>>>>>> > >>>>>>> On 4/8/13 5:41 PM, "Michael Baird" <[email protected]> wrote: > >>>>>>> > >>>>>>>> I have a large application with multiple shared libraries and > >>>>> sub-modules > >>>>>>>> that I'm trying to build through Ant and I'm running into > issues... > >>>>>>> hoping > >>>>>>>> someone here can help. > >>>>>>>> > >>>>>>>> I'm currently targeting the latest AF release - 4.9.1 - and > running > >>>>> into > >>>>>>> an > >>>>>>>> issue where when I launch the Ant-built application, I receive one > >>>>> Flash > >>>>>>>> exception: > >>>>>>>> VerifyError: Error #1014: Class mx.controls::Button could not be > >>>>> found. > >>>>>>>> then another: > >>>>>>>> ReferenceError: Error #1065: Variable > >>>>>>>> > >>>>>>> > >>>>> > >>>>> > _88d866d22da27af4b5978eeb7ebb39d5d661776417e03b75890d49335a9fed4d_flash_di > >>>>> sp > >>>>> l>> > >>>>> a > >>>>>>>> y_Sprite > >>>>>>>> is not defined. > >>>>>>>> > >>>>>>>> This seems to indicate that the Flash player is not being included > >>>>>>> somehow > >>>>>>>> but I can't figure out why! > >>>>>>>> > >>>>>>>> Here is an example of one of my module targets: > >>>>>>>> <target name="dashboard" > >>>>>>>> depends="client"> > >>>>>>>> <java jar="${mxmlc.jar.path}" > >>>>>>>> failonerror="true" > >>>>>>>> fork="true"> > >>>>>>>> <jvmarg value="-Xmx512m"/> > >>>>>>>> <arg value='-debug=${debug}'/> > >>>>>>>> <arg > >>>>>>>> > value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/> > >>>>>>>> <arg > >>>>>>>> value='-load-config=${FLEX_HOME}/frameworks/flex-config.xml'/> > >>>>>>>> <arg > >>>>>>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/> > >>>>>>>> <arg value='-source-path+=${lib.dashboard}'/> > >>>>>>>> <arg value='-runtime-shared-libraries=${core.swf}'/> > >>>>>>>> <arg > >>>>> value='-external-library-path=${build.dir}/core.swc'/> > >>>>>>>> <arg value='-runtime-shared-libraries=${common.swf}'/> > >>>>>>>> <arg > >>>>> value='-external-library-path=${build.dir}/common.swc'/> > >>>>>>>> <arg > value='-runtime-shared-libraries=${charting.swf}'/> > >>>>>>>> <arg > >>>>>>> value='-external-library-path=${build.dir}/charting.swc'/> > >>>>>>>> <arg > >>>>>>>> > value='-file-specs=${lib.dashboard}/${view.dir}/DashboardView.mxml'/> > >>>>>>>> <arg > >>>>>>>> value='-output=${build.dir}/${view.dir}/DashboardView.swf'/> > >>>>>>>> <arg value='-load-externs=${build.dir}/report.xml'/> > >>>>>>>> </java> > >>>>>>>> </target> > >>>>>>>> > >>>>>>>> FLEX_HOME is defined earlier in the build script as the path to > the > >>>>> 4.9.1 > >>>>>>>> base directory. > >>>>>>>> > >>>>>>>> I have also tried using anttasks, and that is working a little > better > >>>>>>>> except when I load a module with charts - then I get another > missing > >>>>>>> class: > >>>>>>>> VerifyError: Error #1014: Class mx.charts::CategoryAxis could not > be > >>>>>>> found. > >>>>>>>> > >>>>>>>> So overall it seems like I'm having linking issues, but I'm using > >>>>> stock > >>>>>>>> flex-configs that look like they are including the right > libraries in > >>>>> the > >>>>>>>> right places. > >>>>>>>> > >>>>>>>> Any help is appreciate... thanks =) > >>>>>>> > >>>>>>> -- > >>>>>>> Alex Harui > >>>>>>> Flex SDK Team > >>>>>>> Adobe Systems, Inc. > >>>>>>> http://blogs.adobe.com/aharui > >>>>>>> > >>>>>>> > >>>>> > >>>>> -- > >>>>> Alex Harui > >>>>> Flex SDK Team > >>>>> Adobe Systems, Inc. > >>>>> http://blogs.adobe.com/aharui > >>>>> > >>>>> > >>>> > >> > >> -- > >> Alex Harui > >> Flex SDK Team > >> Adobe Systems, Inc. > >> http://blogs.adobe.com/aharui > >> > > > > > > -- > Alex Harui > Flex SDK Team > Adobe Systems, Inc. > http://blogs.adobe.com/aharui > >
