Запись Com-объекта на Java

#java #vba #excel #com

#java #vba #преуспеть #com #excel

Вопрос:

Мне нужно написать Com-объект, чтобы использовать его в VBA (Excel) с использованием Java. Я уже написал это на C #, используя ComVisible, это работает хорошо. Но теперь мне нужно переписать его на Java. Я нашел много информации о том, как использовать Com-объекты в Java, но я не смог найти достаточно информации для самостоятельного написания Com-объектов на Java (например, ComVisible assembly в net). Может быть, кто-нибудь поможет мне в этом.

Комментарии:

1. Я подозреваю, что вам нужно будет использовать C — вы можете использовать его для реализации COM-интерфейса, а затем использовать JNI для вызова Java. Звучит не очень весело, хотя!

2. Хм .. Да, на C это проще#

3. Очень давно (> 10 лет) это было легко, но Microsoft и Sun (какими они были тогда) сильно поссорились, и с тех пор ни одна из сторон не проявляла особого интереса к тому, чтобы это работало.

4. ОК. Когда я читал о JNI, это действительно сложный путь для моей задачи, потому что у меня много сложных типов (классы с большим количеством методов и полей в приложении C #).. Я расстроен : (

5. вы можете написать свой объект интерфейса ActiveX на C # и использовать простой протокол C #<-> Java для конкретного приложения, основанный, например, на файлах и процессах командной строки или TCP-сокетах или… Таким образом, вы бы также выполнили работу. Изучение C или JNI слишком сложно, если вам не нужна дополнительная идеальная производительность. Использование COM-объекта для обмена данными из Excel во внешнюю среду — это всего лишь инструмент. Какова ваша цель? Что будет предоставлять Java-приложение? Какие сообщения будут поступать? .. Можете ли вы предоставить диаграмму последовательности UML ?

Ответ №1:

I already wrote it in C# using ComVisible, it works good. But now I need to rewrite it in Java.

Похоже, вы уже решили проблему — зачем вам нужна версия Java.

Если вам действительно нужен код C # для взаимодействия с Java (и наоборот), возможно, вам повезет больше с JNI4Net, который, похоже, является бесплатной версией JNBridge.

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

Редактировать:

Mono, по-видимому, добавил поддержку Java (см. Mono Java). К вашему СВЕДЕНИЮ, Mono не является официальным C # и переписала виртуальную машину C # CLR, но, вероятно, она максимально близка к перекомпиляции Java с виртуальной машиной CLR.

Комментарии:

1. пожалуйста, прочитайте комментарии выше. Это не моя идея переписывать его на Java. Сейчас я разговариваю с заказчиком, чтобы он оставил решение на .net C #.

2. Немного больше информации действительно помогло бы. Если я правильно читаю исходное сообщение, вы используете COM для взаимодействия с MS Excel. Excel работает только на компьютере с Windows, поэтому мне все еще не ясно, зачем кому-то нужна версия Java.

3. Нет. Мое приложение экспортирует некоторые классы для использования его в качестве Com-объектов. Не только Excel, но и все приложения Ms Office используют VBA. Или что-то еще.