Включить заказ в файл *.idl с помощью JacORB

У меня есть одна проблема с задачей idl2java ant (я использую org.jacorb.idl.JacIDL). Этой самой проблемы не существует с моей реализацией cpp для создания idl-файлов формы кода cpp.

У меня есть 3 файла *.idl, скажем:

  • A.idl
  • B.idl
  • C.idl

Каждый из них находится в папке с именем файла в каталоге psm, теперь:
A.idl состоит только из основных типов,
B.idl включает A.idl, а также имеют некоторые базовые типы,
C.idl включает B.idl и A.idl в этот конкретный заказ.

Я не могу изменить порядок включения. Сборка A и B не вызывает проблем. Здание C выдает ошибку:

[jacorb.idl] ERROR : C.idl, line:16(52): Undefined name: 

Сдвиг включает в себя порядок A,B, вместо B,A решает проблему, но я повторюсь - я не могу этого сделать по разным причинам, одна из что является фактом, что реализация cpp, основанная на библиотеке ACE, работает нормально.

Поэтому я вежливо прошу вас о помощи, потому что я понятия не имею, можно ли с этим помочь. Вот моя актуальная задача в качестве бонуса - может быть, это поможет (если есть опечатка, извините, это только здесь - код "работает").

<target name="idlj-generate" depends="idlj-init">
    <idl2java
    srcdir="${psm.dir}/${project}/"
    destdir="${build.generated.dir}"
    packageprefix="com.mypackageprefix"
    includepath="${psm.dir}"
    all="true">
        <define key="__JACORB_GENERATE__"/>
        <define key="globalimport" value="true"/>
    </idl2java>
</target>

и для ознакомительных целей рабочая часть:

<taskdef name="idl2java" classname="org.jacorb.idl.JacIDL">
    <classpath refid="idlj.classpath"/>
</taskdef>

person Kage    schedule 18.02.2015    source источник


Ответы (1)


Лучше всего задавать вопросы по JacORB в списке рассылки jacorb-developer.

Не могли бы вы также уточнить, какую версию JacORB вы используете - вы можете воспроизвести проблему с 3.6?

Вы не предоставили достаточно информации, чтобы указать, что не определено.

Вы пытались удалить флаг «все» и скомпилировать их по одному?

person Nick Cross    schedule 18.02.2015
comment
Приносим извинения за неудобства. Пожалуйста, скажите мне, что еще вы хотите знать. Я использую JacORB 2.3.1. Ошибка не воспроизводится с JacORB 3.6 чему я рад, но... JacORB 3.6. не поддерживает флаг packageprefix. Миграция, вероятно, уничтожит обратную совместимость всего программного обеспечения Corba в моей компании. Мех, я посмотрю. Спасибо за ответ - person Kage; 19.02.2015
comment
Я думаю, что для packageprefix вы после i2jpackage? Вы пытались скомпилировать по одному, т.е. удалить флаг all ? - person Nick Cross; 19.02.2015
comment
Да - пакет i2j с аргументом :prefix решил проблему со старым флагом JacORB. Теперь я перехожу на JacORB 3.6, поскольку первые тесты показывают приемлемый объем работы, необходимый для изменения старых репозиториев (в основном проблемы с совместимостью java 1.4 jdk). Может ничего не взорвется - завтра общие испытания. Спасибо за помощь. Я был настолько зациклен на реализации, что не думал о версиях. - person Kage; 19.02.2015
comment
Здорово! Любые проблемы, списки рассылки JacORB: jacorb.org/contact.html и bugzilla jacorb.org/bugzilla. p.s. если ответ приемлем, будем признательны, если вы разрешите / отметите его :-) - person Nick Cross; 19.02.2015
comment
Я забыл пометить ваш ответ как решенный. Извините за это - я новичок, это был мой первый вопрос. - person Kage; 20.02.2015
comment
Нет проблем :-D Надеюсь, это помогло. - person Nick Cross; 22.02.2015