Как избежать ошибок при отсутствии основного класса и определения класса, используя DropBox и Eclipse для Java - PullRequest
3 голосов
/ 26 февраля 2010

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

Иногда возникает одна из нескольких ошибок. Иногда Eclipse говорит, что не может найти основной класс, а иногда говорит, что не может найти сам класс. Иногда он не сообщает об ошибке, но по какой-то причине фактически не обновляет файл .class и, следовательно, запускает старую версию, даже если компилятор отображает новый исходный код и сохраняет. Затем я заметил, что если я вручную скопирую код в новый файл .java в другом месте файловой системы, а затем скомпилирую его, он будет работать нормально, но по какой-то причине он отказывается перегенерировать файл .class, и мне приходится его удалять вручную и замените его на созданный в другом проекте - тогда все заработает. Но для решения других проблем все необходимо вручную скопировать, удалить и повторно вставить ....

[Фактические ошибки включают NoClassDefFoundError, UnsupportedClassVersionError и некоторые другие ошибки, связанные с отсутствием основного класса.]

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

Спасибо!

Ответы [ 5 ]

5 голосов
/ 26 февраля 2010

Я уверен, что вы столкнетесь с проблемами при использовании Dropbox для обмена вашим источником.

Eclipse не знает, что делает Dropbox, пока он загружает и загружает обновления, и их действия, безусловно, не будут синхронизированы. В произвольные моменты времени, когда Eclipse пытается выполнять сборки и т. Д., Он обнаруживает неожиданную активность, возможно, даже частично загруженные исходные файлы, которые могут объяснить конкретные ошибки, которые вы видите.

Вы пытаетесь сделать что-то более сложное, чем обмен фотографиями или документами. Я бы посоветовал использовать систему контроля версий, такую ​​как git или subversion, для совместного использования и контроля исходного кода. Затем вы можете использовать плагины для Eclipse, которые предназначены для простой интеграции этих систем. Там есть кривая обучения, но навыки будут вам полезны.

Вы можете использовать онлайн-версии этих решений, такие как github и unfuddle , если вы хотите использовать совместное использование, резервное копирование и управление версиями источника как службу, аналогичную Dropbox. Они тоже бесплатны.

4 голосов
/ 26 февраля 2010
3 голосов
/ 26 февраля 2010

Dropbox на самом деле не является адаптированной системой для обмена кодом. Что вам нужно сделать, это настроить SVN и зафиксировать только исходные файлы. Таким образом, у вас не будет таких ошибок.

2 голосов
/ 26 февраля 2010

У Dropbox есть версия (вы можете восстановить старые версии файла), и она не кажется ужасным решением проблемы. Я храню свой репозиторий Eclipse в Dropbox, чтобы он был доступен на любом компьютере; но поскольку я использую его только сам, я не сталкивался с вашими проблемами.

Есть один случай, когда я абсолютно точно вижу, что вы сталкиваетесь с проблемами - это если ваши файлы классов также хранятся в выпадающем списке. Это просто все испортило бы. Убедитесь, что вы указали местоположение на локальном жестком диске для всех артефактов сборки (классы, файлы jar и т. Д.), И что единственная вещь в вашем выпадающем списке - это исходники .java.

На самом деле, я предлагаю вам не хранить свой проект eclipse в своем Dropbox, просто создать свой проект Eclipse и указать его на java-файлы в вашем Dropbox.

Если это не работает для вас, следуйте указаниям других людей и где-нибудь создайте SVN-репозиторий, это проще, чем вы думаете.

О, еще одна возможная проблема - свидания! Возможно, вы захотите убедиться, что дата в ваших java-файлах не скачет вперед и назад (как это может случиться, если один из ваших разработчиков будет в другом часовом поясе). В этом случае Eclipse может предпочесть не перекомпилировать ваш файл.

Кроме того, вместо процедуры копирования / etc, которую вы сейчас проходите, попробуйте принудительно очистить проект.

Ответ на запрос о дополнительной информации:

Когда вы запускаете Eclipse, выберите / создайте рабочую область, которой нет в вашем выпадающем списке. Лучшее место, вероятно, от вашего домашнего каталога. Если вы уже указали рабочее пространство по умолчанию, в меню «Файл» должен быть пункт «Переключить рабочее пространство».

Создайте свой проект. выберите «Создать проект из существующего источника» и укажите исходные файлы в вашем выпадающем списке. Я думаю, что вы хотите «создать отдельные папки для исходных файлов и файлов классов», чтобы ваши файлы классов не попали в вашу папку. Если вы видите что-то, говорящее «Скопируйте файлы в ваше рабочее пространство, скажите« нет ».

»

Это должно дать вам действующий рабочий проект. Я надеюсь, что вы больше не видите этих проблем.

Еще одна вещь может помочь - и это может работать в вашем существующем проекте - без вышеуказанной процедуры ...

Всякий раз, когда вы обновляете свои файлы (f5) для загрузки изменений из раскрывающегося списка, выберите меню «Проект / очистка» и выберите проект. Это должно удалить все файлы классов и перестроить их.

Если ваши файлы классов доступны в Dropbox, это может иметь странные последствия для других людей с открытым затмением, поэтому я действительно предлагаю перестроить ваше рабочее пространство, как я уже говорил выше.

0 голосов
/ 27 февраля 2010

Как избежать отсутствия основного класса

Обеспечить один. Эта проблема не имеет ничего общего с DropBox

...