【问题标题】:Can we use static initializers in a Flex Library?我们可以在 Flex 库中使用静态初始化器吗?
【发布时间】:2011-08-10 04:12:03
【问题描述】:

我们在我的项目中使用 as3Crypto 库。我们已经下载了代码,稍作修改并开始使用它。最初,我们将完整的代码作为项目的一部分。现在我们正在尝试将其编译为单独的库文件(.swc)。当我们编译代码时,我们没有得到任何错误,但是我们得到了一个警告说

Severity and Description    Path    Resource    Location    Creation Time   Id
flex2.compiler.as3.SignatureExtension.SignatureGenerationFailed[level='warning', column='23', node='ForStatement', line='214', cause='flex2.compiler.as3.SignatureAssertionRuntimeException: Unreachable Codepath
    at flex2.compiler.as3.SignatureEvaluator.ASSERT(SignatureEvaluator.java:369)
    at flex2.compiler.as3.SignatureEvaluator.UNREACHABLE_CODEPATH(SignatureEvaluator.java:357)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1560)
    at macromedia.asc.parser.ForStatementNode.evaluate(ForStatementNode.java:50)
    at flash.swf.tools.as3.EvaluatorAdapter.evaluate(EvaluatorAdapter.java:338)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1795)
    at macromedia.asc.parser.StatementListNode.evaluate(StatementListNode.java:60)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:530)
    at macromedia.asc.parser.ClassDefinitionNode.evaluate(ClassDefinitionNode.java:106)
    at flash.swf.tools.as3.EvaluatorAdapter.evaluate(EvaluatorAdapter.java:338)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1795)
    at macromedia.asc.parser.StatementListNode.evaluate(StatementListNode.java:60)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:454)
    at macromedia.asc.parser.ProgramNode.evaluate(ProgramNode.java:80)
    at flex2.compiler.as3.SignatureExtension.generateSignature(SignatureExtension.java:270)
    at flex2.compiler.as3.SignatureExtension.doSignatureGeneration(SignatureExtension.java:174)
    at flex2.compiler.as3.SignatureExtension.parse1(SignatureExtension.java:137)
    at flex2.compiler.as3.Compiler.parse1(Compiler.java:369)

', path='C:\MyData\Flex WorkSpaces\Separate\HurlantCryptoLib\src\com\hurlant\crypto\symmetric\AESKey.as']   HurlantCryptoLib/src/com/hurlant/crypto/symmetric   AESKey.as   line 214    1312947481229   27

当我们检查代码时,我们将其追溯到代码文件 AESKey.as,尤其是来自 Static initializers 代码块。我不能简单地忽略该警告,因为它是我的应用程序安全性的关键部分。

如果有人遇到这个问题,请帮我解决这个问题。

【问题讨论】:

  • 很奇怪我的加密库没有 AESKey.as 文件。
  • Dinesh 你在移动文件时更新了包信息吗?

标签: actionscript-3 apache-flex flex3


【解决方案1】:

要回答标题中的问题,看起来,是的,您可以在 Flex 库项目中使用静态初始化程序。这是一个库项目中的一个类:

package test
{
public class StaticInitializerTest
{
    public static var VALUE:String = "fail";

    {
        VALUE = "pass";
    }
}
}

这是一个使用它的 Flex 应用程序:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
                        creationComplete="onCreationComplete()">
    <mx:Script>
        <![CDATA[
            import test.StaticInitializerTest;

            private function onCreationComplete ():void
            {
                trace("Static initializers in a Flex library project: " + StaticInitializerTest.VALUE);
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

这会产生以下输出:

Static initializers in a Flex library project: pass

【讨论】:

    猜你喜欢
    • 2016-06-28
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2021-05-02
    • 2020-09-21
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多