Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как с помощью mxmlc компилировать класс, находящийся не в корне? (http://www.flasher.ru/forum/showthread.php?t=110738)

WindWalker 08.04.2008 04:06

Как с помощью mxmlc компилировать класс, находящийся не в корне?
 
Если класс находиться в корне (или как это называется правильно? default package?), т.е.

Код:

package {
...
}

То компилировать его элементарно:
Код:

mxmlc <имя_файла.as>
А вот если класс глубоко зарыт в пакеты, то при указание полного пути к файлу компилятор выдаёт ошибку о том, что указанный пекедж не соответствует положению файла в файловой системе.

Подозреваю, что надо как-то указать, какой каталог является "корнем". Но как это сделать?

etc 08.04.2008 10:44

Нужно скомпилировать один конкретный класс?
mxmlc, насколько я помню, умеет рекурсивно компилировать файлы.

WindWalker 08.04.2008 15:53

Нет, надо скопилировать, разумеется, несколько классов.
Первый класс - это тот, который привязан к сцене.

Я очень криво написал первое сообщение. Попытаюсь написать получше.

Есть класс Main:
Код:

package {
  class Main extends MovieClip {

  }
}

Его компилировать легко и просто:
Код:

mxmlc Main.as
Приложение будет рекурсивно скомпилировано, класс Main будет привязан к Stage. Я получу готовый .swf
Кроме того, можно создать Main-config.xml здесь же, в корне, в котором описать различные настройки, типа размер флешки, частота кадров и т.д.

Но если мне не нравиться иметь класс в корне и я его описываю вот так:
Код:

package com.example.test {
  class Main extends MovieClip {

  }
}

То при попытке откомпилировать:
Код:

mxmlc com\example\test\Main.as
Получу ошибку:
Цитата:

Error: A file found in a source-path must have the same package
structure '', as the definition's package, 'com.example.test'.
Кроме того, не совсем ясно, куда в таком случае ложить Main-config.xml

FlexOkeks 08.04.2008 16:35

Цитата:

Сообщение от WindWalker
Его компилировать легко и просто:
Код:

mxmlc Main.as

Не так просто, как написано, нужно сначала сделать рабочим каталог где лежит файл Main.as то есть типа cd C:\Projects\myProject\source И тогда компилятор его найдет, но можно указать полный путь:
Код:

mxmlc C:\Projects\myProject\source\com\example\test\Main.as
А конфиг можно указать опцией -load-config+=[путь к файлу] А можно вообще не указывать , по умолчанию компилятор сначала грузит flex-cofig.xml из SDK а потом ищет в той же дирректории где находиться компилируемый файл, файл со следующим именем имя [имя_компилируемого_файла]-flex-config.xml то есть если в одном каталоге с Main.as будет Main-flex-config.xml то компиллер его подхватит

WindWalker 08.04.2008 17:31

Спасибо. Меня интересовало как раз куда ложить: в корень или в каталог с .as файлом.

Кстати, я нашёл как указывать "корень".

Код:

mxmlc com\example\test\Main.as -compiler.source-path=.
Разумеется, подразумевается, что рабочий каталог и является source path.

FlexOkeks 08.04.2008 18:25

Цитата:

Сообщение от WindWalker
Код:

mxmlc com\example\test\Main.as -compiler.source-path=.
Разумеется, подразумевается, что рабочий каталог и является source path.

Дело в том что компилятор автоматически добавляет в -source-path каталог в ктором находится компилируемый файл, но только в том случае, если этот каталог не является подкаталогом другого каталога уже указанного в -source-path , то есть вы хотите положить Main.as в директорию com\example\test и при этом не указывать pacage com.example.test , пакет в котором фактически находится класс ?


Часовой пояс GMT +4, время: 00:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.