Странная моно ошибка компиляции - PullRequest
15 голосов
/ 01 марта 2010

Я использую IKVM для получения SVNKit в проекте Mono, с которым я работаю, у меня есть класс, реализующий интерфейс из SVNKit, и я не могу скомпилировать:

В Windows и в .NET все компилируется нормально, просто получая это на Mono.

/ дома / nubela / Workspace / subsync / subsync / Core / Subversion / PropGetHandler.cs (22,22): Ошибка CS0535: Subsync.Core.Subversion.PropGetHandler' does not implement interface member org.tmatesoft.svn.core.wc.ISVNPropertyHandler .__ () ` (CS0535) (подсинхронизация)

Я гуглил метод __<clinit>(), и, похоже, это метод инициализатора для базового класса в библиотеке Java, скомпилированного из IKVM.

Понятия не имею, как действовать дальше, есть идеи, ребята? :)

Ответы [ 4 ]

1 голос
/ 21 марта 2010

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

Почему бы вам не использовать библиотеку svn, которая является родной для .NET, например, Svn.NET ? Это было бы намного больше быстрее. Если у вас есть существующий код с использованием SVNKit, вы можете конвертировать его в Svn.NET или просто создать для этого несколько оболочек.

Рыба не может жить вне воды, верно? Он может жить только в своей естественной среде, воде. Итак, SVNKit должен жить в своей естественной среде либо ... Java, а не .NET. SVNKit в .NET похож на человека на Марсе, и это нормально, но я бы предпочел человека на земле.

Svn.NET поддерживает следующие платформы:

  • .NET 2.0 на Win32
  • Mono на Win32 (2.0 framework)
  • Mono в Linux (2.0 framework)

Обратите внимание, что .NET / Mono 3.5 является просто расширением до 2.0, поэтому он будет работать либо на 3.5.

Зачем запутываться? Это будет намного проще для вас .

0 голосов
/ 14 марта 2010

Поскольку ваш класс может быть собран с помощью компилятора Microsoft, это должно быть ошибкой в ​​компиляторе Mono или во время выполнения.

Вы можете использовать сборки, созданные с помощью компиляторов Microsoft с Mono, на любой платформе.

Я могу предложить два обходных пути:

a) Сборка вспомогательной сборки svnkitutil.dll в Windows. Это будет содержать реализацию по умолчанию ISVNPropertyHandler и любые другие проблемные интерфейсы. Затем вы реализуете интерфейс, создав подкласс по умолчанию.

Это может привести к ошибке при той же проблеме.

b) Измените источники Java, чтобы удалить статическое поле в интерфейсе (ISVNPropertyHandler.NULL).

Это может быть много работы, если это общий шаблон для SVNKit.

0 голосов
/ 17 марта 2010

Я собираюсь задать очевидный вопрос здесь ..., но вы запускали свой код через moma http://www.mono -project.com / MoMA ? Я также получил некоторые действительно странные ошибки компилятора, которые были вызваны тонкой несовместимостью (основные методы не реализованы и т. Д.).

0 голосов
/ 10 марта 2010

Если у вас есть доступ к коду в библиотеке Java, вы можете правильно реализовать метод __ ().

Метод void __ () {} - прекрасно компилируется. Если это не поможет, можете ли вы предоставить пример кода, который воспроизводит ошибку?

...