Flex Compilier сообщает, что исходный путь и определение пакета не совпадают

Вот в чем проблема:

У меня есть три файла в одном пакете: com.foobar

Каталог этих файлов:

C: .. \ mylibrary \ src \ com \ foobar \

то внутри у меня есть foo.as и bar.as

Когда я пытаюсь запустить mxmlc C: .. \ mylibrary \ src \ com \ foobar \ foo.as, я получаю сообщение об ошибке:

Файл, найденный в пути к исходному тексту, должен иметь такую ​​же структуру пакета "", что и пакет определения "com.foobar".

На это я говорю: да. Пакет - com.foobar. Структура выглядит ../com/foobar/foo.as

Я нашел несколько других сообщений на форуме в Интернете об этой ошибке, и казалось, что пользователь должен был создать каталог, соответствующий имени пакета, который у меня уже есть. Что мне не хватает?

Заранее благодарим за любую помощь, которую вы можете оказать!


person John D.    schedule 07.10.2010    source источник
comment
Можете ли вы опубликовать точную спецификацию пакета, поскольку она указана для всех трех ваших классов?   -  person David    schedule 07.10.2010
comment
package com.foobar {// импортирует открытый класс Foo {}} Остальные выглядят так же, за исключением того, что имя класса - Bar и Test   -  person John D.    schedule 07.10.2010


Ответы (5)


Коллега помогала мне в этом довольно долгое время. Оказывается, мне пришлось использовать следующую команду:

(в каталоге x, который содержит \src\com\foobar\foo.as)

mxmlc -compiler.source-path=.\src -static-link-runtime-shared-libraries=true .\src\com\foobar\foo.as -output .\test.swf

По какой-то причине команда -source-path, которую я попробовал, не удовлетворила.

Я не совсем уверен, почему это работает так, но теперь это работает. Надеюсь, это поможет другим, которые заблудились, пытаясь скомпилировать пакет ActionScript.

person John D.    schedule 07.10.2010

Я не могу беспокоиться, если это причина вашей проблемы, но я обнаружил, что получил эту ошибку, когда file.mxml ссылался на file.as для класса, а file.mxml находился в неправильном каталоге относительно к названию класса в файле .mxml.

поэтому общий пример, если файл .mxml ссылается на

  • import MyPackage.Util.MyClass;

тогда файл .as, содержащий класс, должен находиться в относительной позиции

  • \ howto \ MyFile.mxml

  • \ howto \ MyPackage \ Util \ MyClass.as

вы, например, затем вызываете компилятор .. \ bin \ mxmlc MyFile.mxml

Я подозреваю, что если вы попытаетесь использовать директивы исходного пути в приведенном выше сценарии, он будет жаловаться, что подкаталоги уже включены.

person how    schedule 01.12.2011

Вы упомянули здесь 3 разных пакета: com.foo, com.foobar и com.plupload, и похоже, что у вас есть один путь к каталогу для всех 3: \ com \ foobar. Если эти классы находятся в каталоге \ com \ foobar \, тогда все они должны объявить пакет как com.foobar. Имя пакета и путь к каталогу должны совпадать, иначе вы получите описанную вами ошибку несоответствия. Итог: имена пакетов и пути к каталогам фактически синонимичны.

person Wade Mueller    schedule 07.10.2010
comment
Упс, извини за ошибку. У всех трех есть объявление пакета: package com.foobar, и все они находятся в каталоге \ com \ foobar. Я отредактировал исходный пост, чтобы исправить ошибки. - person John D.; 07.10.2010
comment
Ой. С этими исправлениями я не вижу ничего плохого в вашем коде. Извините, я не могу помочь. - person Wade Mueller; 07.10.2010
comment
Думаю, я не понимаю, почему там написано, что структура пакета такая ''. Разве ошибка не должна отражать папки, в которых лежит foo.as? - person John D.; 07.10.2010
comment
Я предполагаю, что это связано с использованием mxmlc в командной строке и что он предполагает, что ваш пакет на самом деле является исходным корнем, поэтому он думает, что пакет - это '', а не 'com.foobar'. Это всего лишь предположение. - person Wade Mueller; 08.10.2010

Помимо правильной структуры папок, вам также необходимо дословно сопоставить имя файла и имя класса. Это означает, что foo.as должен быть Foo.as, если ваше имя класса действительно Foo.

person Marcus Stade    schedule 02.06.2011

Подсказка по Flash Builder.

Если вы изменили свой air / flex или какие-либо другие фоновые пакеты или даже добавили новый sdk и вам пришлось немного перекомпилировать файл, чтобы заставить его работать, вам, возможно, пришлось перекомпилировать или обновить файл flash Builder. атласы.

Наиболее распространенная проблема, если ваша папка src или пакет по умолчанию полны ошибок, заключается в том, что Flash Builder просто переместил их ссылки.

Если вы щелкните правой кнопкой мыши файл пакета по умолчанию (.as или mxml и т. д.) и выберите «Установить как приложение по умолчанию», это может решить вашу проблему. Если это не сработает, вам нужно перейти по адресу:

Project > Properties > ActionScript Build Path 

Внизу будет поле «Основная исходная папка». Если это пусто, просто введите 'src' или любое другое имя, которое вы называете исходной папкой, которая содержит все ваши файлы пакетов (.as или что-то еще).

Если ваш пакет / файл по умолчанию все еще показывает ошибки (т.е. файл, найденный в исходном пути, должен иметь ту же структуру пакета 'src', что и пакет определения)

go to Project > Properties > ActionScript Compiler

и посмотрите, какую версию Flex SDK вы используете. Если выбрана кнопка «по умолчанию», попробуйте выбрать «Использовать конкретный SDK» и посмотреть, что в нем указано. Обычно он перечисляет только один, и он будет читать что-то вроде Flex 4.6.0 или что-то подобное. Запишите это имя и поищите на жестком диске файл flex-sdk-description.xml. Обычно он находится в вашем:

Adobe > Adobe Flash Builder 4.6(or your current version) > sdks > Flex 4.6.0 (то же имя, что и во Flash Builder).

Откройте этот файл, и вы увидите flex-sdk-description.xml Щелкните правой кнопкой мыши или выделите его и выберите, чтобы открыть его с помощью блокнота (Windows). У него будет длинная очередь дескрипторов. найдите <name>Something written here</name>, он должен иметь то же имя, что и выбранный вами Flash Builder Flex SDK (который мы только что обнаружили секунду назад). Иногда вам придется изменить это <name>, чтобы использовать определенный SDK или расширение в Flash Builder. Здесь я не могу вам помочь, и вам нужно убедиться, что это <name> Flex 4.6.0 или какая-либо версия flex, которую вы используете. Если это Flex 4.6.0 (Air3.6) или что-то еще, вам может потребоваться связаться с Adobe или создателем sdk / extension, чтобы узнать, что вы можете сделать.

Наконец, проверьте раздел «Вывод» в «Проект»> «Свойства»> «Путь сборки ActionScript», поскольку по умолчанию для вывода используется bin-debug. Если вы специально не меняли это заранее, то по умолчанию это будет: bin-debug

Удачи!

person Aaron    schedule 21.02.2013