2015-02-11 3 views
0

В настоящее время я работаю над онлайн-судьей, где пользователи могут загружать материалы на проблемы программирования на разных языках. Затем эти материалы оцениваются, и результаты возвращаются пользователю.Компиляция файлов Java с разными именами файлов и именами классов

Я работал над представлением на C++ до сих пор и разрешил пользователям загружать материалы, которые будут храниться как submission_number.cpp на сервере (подробности каждого представления также хранятся в базе данных MySQL).

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

Есть ли способ скомпилировать без имени файла == classname rule? В качестве альтернативы, может ли кто-нибудь предложить лучшее обходное решение, чем тот, о котором я упоминал? Благодаря!

+0

Вам действительно нужно переименовать свои материалы? Не можете ли вы сохранить материалы в папке с именем 'submission_number' для каждой подачи (или что-то вроде этого)? Можете ли вы предоставить отправителям предопределенное имя класса, прежде чем они действительно отправят свой код? Если вам определенно нужно переименовать их: следует ли публиковать классы представления? –

ответ

0

Невозможно назвать файл, отличный от общедоступного класса, содержащегося в файле. Вместо того, чтобы переименовывать класс, я бы назвал файл правильно. Было бы очень сложно переименовать все ссылки на имя класса (может быть даже содержаться в строке). Возможно, поместите его в папку, соответствующую номеру отправки.

Смежные вопросы