Я работаю с БОЛЬШОЙ устаревшей кодовой базой C++ с многочисленными IDL-файлами, в которых все типы и константы объявлены вне какого-либо модуля.
Для C++ это приводит к тому, что код генерируется в глобальном пространстве имен — некрасиво, но приемлемо.
Теперь я пытаюсь добавить клиентов Java для подключения через CORBA. Однако для Java типы, сгенерированные из IDL (с использованием компилятора Sun/Oracle IDL для java: idlj), находятся в пакете java по умолчанию, поскольку они не находятся в модуль ИДЛ. Это приводит к ошибкам компиляции Java, поскольку импорт из пакета по умолчанию незаконен.
Я ищу самый простой способ решить проблему.
Я рассмотрел следующее:
Мне трудно поверить, что нет простого способа заставить IDL быть в пакете Java, если нет существующего модуля, содержащего все типы. Я надеюсь, что я просто пропускаю очевидное!
Изменить:
Пример:
Foo.idl
struct Foo
{
.
.
.
}
Foo.java: (обратите внимание, что пакет не указан, что означает пакет по умолчанию):
public final class Foo implements org.omg.CORBA.portable.IDLEntity
{
.
.
.
}
ClassUsesFoo.java:
package com.sigh;
import Foo; // <-- this is an error
public class ClassUsesFoo
{
private Foo f;
};