Можем ли мы использовать статические инициализаторы в библиотеке Flex? - PullRequest
0 голосов
/ 10 августа 2011

Мы используем библиотеку 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, особенно из Статических инициализаторов блока кода. Я не могу просто проигнорировать предупреждение, так как оно является критической частью безопасности моих приложений.

Если кто-нибудь сталкивался с этой проблемой, пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 17 февраля 2012

Чтобы ответить на вопрос в заголовке, похоже, что вы можете использовать статические инициализаторы в проекте библиотеки 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
...