• ,

Оформление кода

Одну из задач (которая была решена и принята сервером) я реализовал в виде кода (забил * и X-ми чтобы не спойлерить).

/* xxx
1. Считывать строки(параметры) с консоли, пока пользователь не введет пустую строку(Enter).
2. Каждый параметр соответствует имени ***.
Для каждого параметра:
3. Создать объект *** класса ***, который равен *** из getX(String параметр).
4. Вывести на экран toString().
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Add your code here
        List<String> al= new ArrayList<>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while(!"".equals(str = reader.readLine())) al.add(str);
        for (int i = 0; i <al.size(); i++) System.out.println(XFactory.getX(al.get(i)).toString());
    }
...

Зашедший в гости полузнакомый раскритиковал, что так не пишут (это тебе не C и т.п.).
Не подскажете в чем я не прав (есть какие нормы и общепринятые стандарты)?
Или использование в одной строчке нескольких конструкций (оно вообще, без промежуточных присваиваний временным переменным, может привести в каких-либо ситуациях к каким-либо возможным последствиям?) — дурной тон?
Основные переменные (al, reader, str) объявлены до их использования (pascal-стиль), так как мне удобнее, всегда знаешь где можешь найти описание переменной с возможным комментарием.
Вспомогательные переменные объявлены в нужной зоне видимости (как переменная цикла i).
Idea не ругается, правда предлагает 2 опции:
Split into declaration and assigment (таки разделить объявление и присваивание) и заключить некоторые участки в блок try.

Как бы Вы правильнее написали код?

Что не так?
Для такой задачи не стоит комментировать каждую строчку.
  • ,

Ошибка плагина.

После установки последней версии плагина в IDEA периодически стали выскакивать ошибки. На работу вроде не влияют, но надо починить я думаю или может я не так что-то сделал.

cannot share data context between Swing events; initial event count = 248777; current event count = 250128
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:115)
at com.intellij.ide.impl.DataManagerImpl$MyDataContext.getData(DataManagerImpl.java:357)
at com.intellij.openapi.actionSystem.DataKey.getData(DataKey.java:75)
at com.intellij.openapi.actionSystem.AnActionEvent.getData(AnActionEvent.java:165)
at com.intellij.openapi.actionSystem.AnActionEvent.getProject(AnActionEvent.java:120)
at com.javarush.plugin.JavaRushTaskChooser.actionPerformed(JavaRushTaskChooser.java:201)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$3.performAction(IdeKeyEventDispatcher.java:595)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:646)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:485)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:215)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:617)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:380)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
  • ,

Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA

Создаем исполняемый jar в Intellij IDEA

Как оказалось, не так то и просто найти в просторах интернета информацию об этом. Есть много ссылок на то, как это делается в Eclipse, а про Intellij IDEA сказано не многим больше нуля. Поэтому я создал этот пост.

IntelliJ IDEA дает возможность быстро создавать исполняемый JAR-файл вашей программы, содержащий модули со всеми зависимостями.

Для того, чтобы создать JAR, необходимо проделать всего 3 пункта:

1. Нажмите кнопку ‘+’ в диалоговом окне Project Structure и выберите соответствующий пункт (Рисунок 1):

Рисунок 1 – Project Structure -> Artifacts -> Jar -> From modules with dependencies

2. Далее IntelliJ IDEA показывает диалог, позволяющий настроить новый артефакт (Рисунок 2):

Здесь нужно выбрать главный класс вашего проекта и нажать ОK

Рисунок 2 – Диалог создания нового артефакта JAR

3. После нажатия клавиши ОК, вы можете создать файл Jar с помощью пункта меню Build -> Build Artifact

По умолчанию все библиотеки будут извлечены в целевой Jar. Сам исполняемый файл будет сгенерирован в директории out -> artifacts вашего проекта (Рисунок 3):

Рисунок 3 – Месторасположение сгенерированного JAR файла

Все, теперь исполняемый файл можно запускать.


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Перестал работать плагин javaRush в Idea под Ubuntu

IDE internal Error occured
Здравствуйте, Господа.
Прошу Вашей помощи. Перестал работать плагин для Idea, не могу решать задачи.
Работаю в Ubuntu 14. Версия jdk 1.8.0_60
Раньше все работало хорошо, но в какой-то момент при нажатии на в Idea на кнопку получения списка задач с ДжаваРаша, IDE стала выдавать ошибку.
Прошу подсказать, что же делать.

Описание ошибки:
ExceptionInInitializerError: null
null
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at javax.xml.soap.FactoryFinder.newInstance(FactoryFinder.java:47)
at javax.xml.soap.FactoryFinder.find(FactoryFinder.java:194)
at javax.xml.soap.FactoryFinder.find(FactoryFinder.java:98)
at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.java:74)
at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:146)
at com.sun.xml.internal.ws.api.SOAPVersion.(SOAPVersion.java:175)
at com.sun.xml.internal.ws.api.SOAPVersion.(SOAPVersion.java:84)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseBinding(RuntimeWSDLParser.java:590)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(RuntimeWSDLParser.java:460)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:234)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:194)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:163)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:348)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:306)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:215)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:196)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(WSServiceDelegate.java:192)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)
at javax.xml.ws.Service.(Service.java:77)
at com.javarush.server.api.JarCommonService.(JarCommonService.java:42)
at com.javarush.plugin.JavaRushCommonService.(JavaRushCommonService.java:18)
at com.javarush.plugin.JavaRushUtil.authorize(JavaRushUtil.java:60)
at com.javarush.plugin.JavaRushTaskChooser.actionPerformed(JavaRushTaskChooser.java:46)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:162)
at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:170)
at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:133)
at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:311)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:696)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.util.MissingResourceException: Can't find com.sun.xml.internal.messaging.saaj.soap.LocalStrings bundle
at java.util.logging.Logger.setupResourceInfo(Logger.java:1945)
at java.util.logging.Logger.(Logger.java:380)
at java.util.logging.LogManager.demandLogger(LogManager.java:554)
at java.util.logging.Logger.demandLogger(Logger.java:455)
at java.util.logging.Logger.getLogger(Logger.java:553)
at com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl.(SAAJMetaFactoryImpl.java:42)
… 64 more

Домашние и бонусные задания

Приветствую, друзья. Вопрос следующий.

Для каждого уровня есть «Домашние и бонусные задания».
Каждый раз капитан Бобров говорит следующее:
"
У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.
"

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

Идея на самом деле отличная. Выполнять задания на ооп, алгоритмы и прочие штуки ежедневно — значит набивать руку.

Всем спасибо за ответы.
  • ,

Ошибка выполнения в IDEA

Всем доброго. После обновления IDEA до 14.1.4 при запуске любой задачи на выполнение начала появляться такая ошибка:

Information:Using javac 1.7.0_75 to compile java sources
Information:10.08.2015 15:06 - Compilation completed with 1 error and 0 warnings in 5s 841ms
Error:Module 'JavaRushHomeWork' production: java.lang.IllegalArgumentException: No enum constant java.lang.annotation.RetentionPolicy.


Причем компиляция проходит безошибочно, ошибка появляется именно на стадии выполнения.
Плагин обновил. v.1.21. Ошибка никуда не ушла. Помогите (вдруг кто сталкивался) решением.
  • ,

Ant/Maven и Intellij Idea

Всем доброго времени суток, не знаю куда задать очень меня интересующий вопрос, надеюсь не ошибся с местом.

В перерывах между обучением на курсе я начал создавать своим мини-программки. Не найдя ничего более оригинально сделал калькулятор на swing'е, потом прочитал одну статейку про разработку игр и запилил крестики-нолики на javaFX. Дошел до 35го уровня и опять потянуло сделать что-нибудь свое, решил делать теплый ламповый Pong. В каждом проекте были какие-то новые для меня технологии и дело дошло до баз данных. Мне это показалось не очень сложной вещью, но для интеграции базы данных в программу используется сторонняя библиотека, которую надо как-то прилепить к проекту. Долго искать решение не пришлось, как утверждает гугол сборкой проектов в 95% программ занимается специальный сборщик, либо Ant (попроще), либо Maven(поэффективнее). И вот моя проблема — не могу найти внятного гайда по сборке проекта с помощью Maven. Попадаются либо гайды с использованием других IDE, в которых очень другое управление, либо гайды по версии Idea 0.9beta, в которых тоже многое отличается, либо гайды где просят нажать на «волшебную кнопку» чтобы все закомпилилось.
Собственно моя просьба к сообществу вполне очевидна — внятный гайд на русском/английском, написанный не как перечисление возможностей, а как конкретное руководство от создания программы и до конечного jar файла. В виде стены текста или «мувера», что бы это бесовское слово не значило :)
Всем заранее спасибо за ответы.
  • ,

как создать дубликат / копию проекта IntelliJ IDEA?

Всем привет. Нуждаюсь в совете, как сделать независимую наиболее точную копию проекта IntelliJ IDEA?

Задача такая. Имеется проект JavaRushHomeWork, с множеством решенных задач. Хочу некоторые из них (т.е. своих решений этих задач) распечатать. Причем распечатать средствами самой IntelliJ IDEA, т.к. она печатает код так же (сохраняются выделение цветом и форматирование), как он выглядит при редактировании.
Но чтобы напечатать нужные мне файлы (книжкой со сквозной нумерацией страниц)- надо сначала удалить ненужные мне файлы. В данном проекте я этого делать естественно не хочу. Значит, надо создать дубликат проекта. Вот это у меня никак не получается.

Пробовала создать новый пустой проект (как с папкой src так и без нее) и импортировать в него существующий проект. Ерунда выходит. Пробовала также импортировать МОДУЛЬ, но это еще хуже — он отображается в новом (пустом до импорта) проекте, но на жестком диске в папке данного проекта копий java-файлов не появляется — значит, это лишь ссылка на оригинальный проект.

Пробовала средствами О.С. копировать файлы и каталоги — задачи не компилируются, заголовки пакетов подчеркиваются волнистой красной линией. Т.е. где-то остались пути к оригиналу проекта.
Вручную что ли менять xml-файлы настроек?

Как сделать независимую копию проекта IntelliJ IDEA с другим именем в ней же?
При этом очень желательно, чтобы автоматически изменился workspace.xml, но не удалением строк, а заменой путей/названий.