Ответы пользователя по тегу Java
  • Как скомпилировать программу на JAVA в Eclipse?

    @MaxLich
    java developer
    Я бы лучше начал с хеллоу ворлда. И дальше уже писал всё более сложные и сложные программы. А вообще - лучше просто взять хорошую книгу по джаве (или курсы какие нормальные пройти, но книгу всё равно прочитать придётся). В книге как раз будет идти обучение от простого к сложному - само то.
    Ответ написан
  • Почему значение final можно изменять?

    @MaxLich
    java developer
    Нельзя менять final-поля после создания объекта, но можно и нужно их менять (задавать им значения) во время создания объекта. Так что тут никаких проблем нет. Во время создания объекта, перед вызовом конструктора, инициализируются все поля, в том числе и данное поле id.
    Ответ написан
    Комментировать
  • Gradle-проект не публикуется в локальный Maven-репозиторий из-за того, что в исходных кодах использует русский текст. Как это исправить?

    @MaxLich Автор вопроса
    java developer
    Нужно дописать в build.gradle следующее:
    tasks.withType(Javadoc) { options.encoding = 'UTF-8' }
    Ответ написан
    Комментировать
  • Java - с чего начать?

    @MaxLich
    java developer
    Можно почитать Хорстманна, а потом Эккеля. Но без своих проектов совсем туго. Так же с некоторого времени нужно начинать изучать, как выше указали, Спринг, Хибернейт, сборщики проектов, СКВ, а также разработку веб-приложений.

    ЗЫ Да, конечно, курсы - это круто. Тот же Джавараш (сам прошёл и доволен, хотя его одного мало, очень мало), или ещё много других. Но тут каждый решай сам, как ему лучше и удобнее.
    Ответ написан
    Комментировать
  • Как в IntelliJ IDEA преобразовать maven-проект в gradle-проект?

    @MaxLich Автор вопроса
    java developer
    Пока помогло отдельно установить грейдл и выполнить в корне проекта "gradle init". Вроде бы всё нормально преобразовалось. Пробовал запускать приложение и билдить - вроде без проблем. Посмотрю ещё дальше, как будет работать.
    Ответ написан
    Комментировать
  • Как в Gradle опубликовать свою библиотеку в локальном репозитории и потом подключить её из этого репозитория в другом приложении?

    @MaxLich Автор вопроса
    java developer
    Решение: добавить в репозитории (в build.gradle) mavenLocal(). + чтобы публиковать, надо использовать команду publishToMavenLocal.
    Ответ написан
    Комментировать
  • Как получить текущий размер компонента в Swing?

    @MaxLich Автор вопроса
    java developer
    Пока сделал так:
    private void customizeColumnModel(TableColumnModel columnModel) {
            int width = (table.getWidth() == 0)? ViewGUI.WINDOW_WIDTH :  table.getWidth();
            final int defaultColumnWidth = 100;
            int columnWidth = defaultColumnWidth;
            int columnCount = columnModel.getColumnCount();
            int widthAllColumns = columnCount * defaultColumnWidth;
            if (widthAllColumns < width) {
                columnWidth = width / columnCount;
            }
     
            for (int i = 0; i < columnCount; i++) {
                setColumnWidth(columnModel.getColumn(i), columnWidth, columnWidth, columnWidth);
            }
        }


    То есть получаю ширину главного окна, и в зависимости от этого вычисляю ширину столбцов. В принципе, нормально. Приложение тестовое, поэтому графика неважна. Но если будут более хорошие и простые предложения, то обязатально рассмотрю.
    Ответ написан
    Комментировать
  • Почему не получается распарсить xml?

    @MaxLich Автор вопроса
    java developer
    Была ошибка с импортом: импортировал не ту аннотацию (XmlElement). Исправил, но теперь вылетает NPE. Как раз при анмаршаллинге.
    Сама ошибка:
    стек-трейс эксепшена из консоли
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:289)
    at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:253)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:106)
    at com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty$ReceiverImpl.receive(ArrayERProperty.java:198)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(UnmarshallingContext.java:597)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:165)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)
    at org.limantrade.model.xml.XmlParser.parse(XmlParser.java:59)
    at org.limantrade.model.xml.XmlParser.parseXmlStaff(XmlParser.java:18)
    at org.limantrade.model.PercoConnectorMock.getStaffList(PercoConnectorMock.java:42)
    at org.limantrade.model.MainModel.loadTableModelEmployees(MainModel.java:68)
    at org.limantrade.model.MainModel.loadTableModel(MainModel.java:51)
    at org.limantrade.controller.MainController.onRefreshTable(MainController.java:29)
    at org.limantrade.view.ViewGUI.fireUpdateTable(ViewGUI.java:163)
    at org.limantrade.view.guicomponents.PanelTableWithButton.lambda$addComponents$0(PanelTableWithButton.java:57)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    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:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    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:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    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)
    Ответ написан
  • Как сохранять дату в базе PostgreSQL?

    @MaxLich Автор вопроса
    java developer
    Решил эту проблему. Оказалось, что это был мой косяк: не заметил, и поставил тип столбца "time with time zone", а нужно было - "timestamp with time zone". Преобразование входящий даты теперь выполняю так:
    long createTime = event.getCreateTime();
    preparedStatement.setTimestamp(column, new java.sql.Timestamp(createTime), Calendar.newInstance());


    (Но думаю переделать на DateTime API из Java 8.)
    Ответ написан
    Комментировать
  • Почему java-программа, работающая с COM4J, выдаёт эксепшн?

    @MaxLich Автор вопроса
    java developer
    Оказалось, что нужно было запустить программу под 32-битной виндой, с 32-битной джава-машиной. Проблема решена.
    Ответ написан
  • Как в log4j одновременно писать в разные файлы сообщения с разными уровнями?

    @MaxLich Автор вопроса
    java developer
    Пока помогло удаление уровня из объявления логгера (в конфиге; рутового логгера) и добавление каждому аппендеру своего уровня (через threshold). Вот изменённый log4j.properties:
    содержимое файла log4j.properties
    # Базовый уровень логирования
    log4j.rootLogger=TRACE, info_log_file, stdout, full_log_file
    
    # Апендер для работы с файлами
    log4j.appender.info_log_file=org.apache.log4j.RollingFileAppender
    log4j.appender.info_log_file.File=info_log.log
    log4j.appender.info_log_file.threshold=INFO
    log4j.appender.info_log_file.MaxFileSize=1MB
    log4j.appender.info_log_file.MaxBackupIndex=10
    log4j.appender.info_log_file.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.info_log_file.layout.ConversionPattern=%d{ISO8601} [%-5p][%20c{-2}] - %m%n
    
    #вывод в консоль
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.threshold=INFO
    log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%-5p][%20c{-2}] - %m%n
    
    # Апендер для работы с файлами
    log4j.appender.full_log_file=org.apache.log4j.RollingFileAppender
    log4j.appender.full_log_file.File=full_log.log
    log4j.appender.full_log_file.threshold=TRACE
    log4j.appender.full_log_file.MaxFileSize=1MB
    log4j.appender.full_log_file.MaxBackupIndex=10
    log4j.appender.full_log_file.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.full_log_file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c{1}:%L] - %m%n

    Но я не уверен, что это правильное решение.
    Ответ написан
    Комментировать
  • Как пишут REST API на Java?

    @MaxLich
    java developer
    Тоже задавался этим вопросом, но пока особо не копал в эту сторону. Нашёл пока на степик курс, но ещё не прошёл его: курс по созданию веб-приложения на джава
    Ответ написан
    Комментировать
  • Что и на чём программировать в 13 лет?

    @MaxLich
    java developer
    Как тут уже писали, нужно сначала хорошо закончить школу, хорош сдать ЕГЭ и поступить в хороший вуз по специальности. А это всё не совсем связано с программированием. Так что хорошо было бы прокачиваться в математике и информатике для начала. Ну и олимпиады будут в любом случае плюсом (и для поступления, в том числе).
    Как говорится, у программисты есть две функции - собственно программировать и устраиваться на работу. И эти две вещи не сильно между собой связаны. Что нужно для прохождения собеседований, не всегда нужно для самой работы. И наоборот - если ты пишешь хорошие программы, но не знаешь общей теории и тонкостей языка, то можешь и "не добраться" до работы. То есть ты просто не пройдёшь собеседование и всё. Тут такая же аналогия: одно делать это непосредственно программировать, другое дело выполнять всё сопутствующее, чтобы собственно этим программированием заниматься. А в данном случае сопутствующее - это математика и информатика в школе, сдача выпускных экзаменов, поступление в ВУЗ (ну и учёба в ВУЗе, его окончание на хорошие оценки).
    По поводу языка - точно не знаю, но если изучать джаву, то потом можно заняться андроидом. Обычно подросткам и молодым парням это нравится (программировать для андроида).
    Ответ написан
    Комментировать
  • Есть ли аналоги JavaRush для c# желательно на русском?

    @MaxLich
    java developer
    нашёл неплохие курсы SQL на степик, плюс ещё по созданию веб-приложения на джава там есть курсы. По Пайтону видел курсы. Думал, что по си шарпу тоже что-то должно быть, но поискав - не нашёл. Вот только тыц. Так что даже не знаю, что есть на русском. Могу только предложить книги (разве что обратной связи не будет).
    Кроме того, ещё можно попробовать найти ментора или поискать курсы майл-ру, яндекса или ещё какой-нибудь такой же крупной русскоязычной конторы.
    ЗЫ Но это если нужны именно русскоязычные курсы. Как я понял, про английские тебе уже рассказали.
    Ответ написан
    Комментировать
  • Что изучить в комплексе с курсами Javarush, чтобы можно было брать заказы на фрилансе или куда-то устроиться как Java Junior?

    @MaxLich
    java developer
    Тоже прошёл джавараш, но не прошёл у них стажировку. А о ней многие хорошие отзываются. Да и видел где-то там программу стажировки: вроде всё, что понадобится на работе (одного чистого джавараш не достаточно). Так что, если есть возможность, идите ещё на стажировку. Но это если планируете идти в интерпрайз. Так-то можно в андроид уйти после хорошего изучения джавакор. (и тогда, конечно, эта стажировка в джавараш Вам не нужна).
    Ответ написан
    Комментировать
  • Почему у меня программа не работает так, как надо, когда я запускаю её двойным кликом?

    @MaxLich Автор вопроса
    java developer
    В общем-то решил эту проблему. Получился такой метод:
    private static String getClassLocation(Class<?> c) {
            URL pathURL = c.getProtectionDomain().getCodeSource().getLocation();
            try {
                Path path = Paths.get(pathURL.toURI());
                String rootStr = path.getRoot().toString();
                return rootStr + path.subpath(0, path.getNameCount()-1).toString() + File.separator;
            } catch (URISyntaxException e) {
                e.printStackTrace();
                return "";
            }
        }

    На вход подаю класс, в котором лежит этот метод. В итоге получается абсолютный путь к папке, в которой лежит джар-файл. Ну а дальше всё просто: присоединяю к этому пути имя проперти-файла, подаю эту строку на вход методу load() из класса Properties (естественно, перед этим создаю объект этого класса), и дальше получаю объект Properties с нужными данными. Работает и в линуксе (убунту), и в виндоуз (виндоуз 7 в моём случае).
    Ответ написан
    Комментировать
  • Как писать в файл в jar-нике из класса, находящегося в том же jar-нике?

    @MaxLich Автор вопроса
    java developer
    Пока нашёл это: ссылка. И судя по всему это невозможно. Можно только писать в какой-то внешний файл. Это неудобно, потому что проще распространять программу в виде одного файла - jar. Выходом вижу запаковку папки с jar-ником и внешним файлом в архив, и распространение программы в таком виде. (В моём случае, я могу просто каждый раз создавать файл топ-листа в той же папке, где находится jar-ник, и работать уже с этим созданным файлом.)

    ЗЫ Только не пойму пока, как работать тогда с файлом из ИДЕИ, надо подумать....
    Ответ написан
  • Как расширить южную Swing панель (BorderLayout.SOUTH)?

    @MaxLich
    java developer
    А GridLayout?
    Ответ написан
    Комментировать
  • Можно ли в Java Swing изменить длину JSlider и убрать заполнение полоски?

    @MaxLich Автор вопроса
    java developer
    Вроде как разобрался с проблемой "всё поехало", использовал для этого выравнивание. Осталось решить проблему с заполнением полоски (честно говоря, пока несильно копал в эту сторону).
    Ответ написан
    Комментировать
  • Почему не работает вставка узла комментариев после каждого узла с определённым именем в документе XML?

    @MaxLich Автор вопроса
    java developer
    Сам нашёл ошибку. Надо было при вставки нового узла сразу же его создавать. А заранее создавал один, и пытался его везде повставлять.
    То есть в коде должна быть такая строчка:
    element.getParentNode().insertBefore(document.createComment(comment), element)

    вместо той, которая есть.
    Ответ написан
    Комментировать