• Как указать Class-Path в MANIFEST.MF maven?

    @zelan
    Кратко обо мне не получится.
    <plugins>
    
            <!--Настройка компиляции проекта-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
    
                    <configuration>
    
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
    
    
                <!--Копирование зависимотей в папку lib/-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
    
                        <!--Все зависимости которые нужны для работы твоего приложения будут лежать здесь-->
                        <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                        <overWriteReleases>true</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
    
                    </configuration>
                    <executions>
                        <execution>
    
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </execution>
    
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
    
                    <configuration>
                        <archive>
    
                            <!--Если надо конфигурировать манифест, то здесь-->
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <!--путь к зависимостям относительно запускаемого jar файла-->
                                <!--ВСЕ ЗАВИСИМОСТИ ДОЛЖНЫ БУДУТ ПОСТАВЛЯТЬСЯ С ТВОИМ jar приложением. -->
                                <classpathPrefix>lib/</classpathPrefix>
                                <classpathLayoutType>simple</classpathLayoutType>
    
                                <mainClass>main.Main</mainClass>
                            </manifest>
                            <!--<manifestEntries>-->
                            <!--<Rsrc-Class-Path>${}</Rsrc-Class-Path>-->
                            <!--</manifestEntries>-->
    
                        </archive>
                    </configuration>
                </plugin>
    
            </plugins>


    Мавен соберет jar файл, отредактирует манифест. Результатирующий jar будет лежать в папке target - надеюсь знаешь что это. Тамже будет лежать папка lib/ со всеми завимостями (другими jar файлами). Если взять результирующий jar и эту папку, и положить вместе в другую папку - то получится полноценный дистрибутив. Но это уже другой плагин. Со временем разберешься.

    В твоем варианте вообще все изначально не верно. В манифесте должны быть прописаны все используемые jar файлы. Старайся не лезть в манифейст вообще. А у тебя указан только /home/saveli/.m2/repository - там куча папок,с кучей версий jar, поэтому ничего и не находит.

    Третий плагин можно вообще убрать, но тогда все jаr файлы из папки target/lib/ должны лежать рядом с результирующим jar.
    Ответ написан
    1 комментарий
  • Почему не отображается Java Applet в IE 11?

    @zelan
    Кратко обо мне не получится.
    Пропускай главу про апплеты. Поддержка браузерами прекращена. Технология нигде не используется.
    Ответ написан
    Комментировать
  • Какой способ ввода лучше использовать в Java?

    @zelan
    Кратко обо мне не получится.
    В первом случае чтение выполняется быстрее. Если пользователь вводи все вручную, то ускорения не заметишь.

    Далее удобства только для тебя. Первый вариант позволяет читать посимвольно/построчно/определенную длину. Второй вариант имеет кучу методов для чтения конеретного типа данных. Например просишь ввести пользователя число и делаешь вызов in.nextInt().
    Ответ написан
    Комментировать
  • Почему при нажатии кнопки не отображается ProgressBar?

    @zelan
    Кратко обо мне не получится.
    Дело в том, что ваши расчеты ("тяжелая имитация") производятся в потоке, который отвечает за работу и отрисовки графики (компонентов). Пока работает ваш цикл имитации - блочится и не отрисовывается ВЕСЬ интерфейс программы. Тяжелые расчеты должны производиться в отдельных потоках.

    Почитайте про SwingWorker, и в целом про синхронизацию интерфейса.
    Ответ написан
    Комментировать
  • Как понять момент в преобразовании числа в бинарную строку?

    @zelan
    Кратко обо мне не получится.
    utf8bytes[0] - имеет тип byte
    значения примитивного типа byte лежит в диапазоне от -128 до 127.
    метод Integer.toBinaryString(...) преобразует int в бинарную строку.

    Теперь смотри:
    допустим utf8bytes[0] = 0xFE, на первый взгляд 0xFE= 254, но для типа byte 0xFE=-2.
    Если этот 0xFE (типа byte) преобразовать к типу int, то мы получим также -2, но для типа int это будет уже 0xFFFFFFFE.

    поэтому делают так: 0xFF & utf8bytes[0]
    0xFF в этом выражении имеет тип int и является сокращенной записью 0x000000FF
    utf8bytes[0] здесь предположим равен 0xFE и при преобразовании к int будет равен 0xFFFFFFFE

    Результат выражения равен 0x000000FE - что соответствует 254, и при преобразовании в bin равен "11111110"
    Ответ написан
    2 комментария
  • Почему у меня строки равны null?

    @zelan
    Кратко обо мне не получится.
    если вылетает здесь:
    if (contact == null){
             lblName.setText(contact.getName());
             lblSense.setText(contact.getSense());
     }


    то lblName или lblSense, а может быть и оба - не инициализированы и раны null.

    Почему? Надо больше кода.
    Прикол в том, что эта проверка бессмысленна, если бы контакт был бы равен null, то ты бы обработал этот вариант тут:

    if ( empty||contact == null){
                setText(null);
                setGraphic(null);
    }

    А если ты дошел сюда, то контакт ТОЧНО не равен null.
    Ответ написан
  • Как вставить HTML теги в таблицу?

    @zelan
    Кратко обо мне не получится.
    Вместо двойных кавычек внутри строки поставь одинарные
    "<div class = 'post_header'>Заголовок поста</div>"

    или экранируй двойные кавычки внутри строки

    "<div class = \"post_header\">Заголовок поста</div>"
    Ответ написан
  • В чем ошибка(java/socket/file transfer)?

    @zelan
    Кратко обо мне не получится.
    long res = dim.readLong();
                System.out.println("res "+res);
    
                //здесь ты приводишь long к int, и может произойти переполнение,
                // и размерность массива будет отрицательной. Из-за этого вылетает эксепшн
                byte[] byteArray = new byte[(int) res + 1];


    во второй раз ты передаешь длину массива которую прочитал сервер
    и опять ты урезал длину ограничив интом
    File file = new File(basePath + "\\"+fileName);
    //вот здесь ты обрезал получаемою длину файла, и от потока требуешь в будущем прочитать данные в этот массив
    //но читаешь ты только кусок
    //опять же здесь ты можешь снова получить отрицательное значение размерности массива
    byte[] byteArray = new byte[(int) file.length()];
    
    //и во второй раз ты передаешь длину ОБРЕЗАННОГО МАССИВА который в реальности смог прочитать здесь
    bufferedInputStream.read(byteArray, 0, byteArray.length); // copied


    не складируй данные в массив, передавай длину лонгом (или вообще не передавай , незачем она), а потом в цикле читай побайтово через read() (метод возвращает int - и как только он вернет -1 значит данные кончились) и сразу пиши в файл.
    Ответ написан
    3 комментария
  • Почему в Idea форма представляет собой кусок???

    @zelan
    Кратко обо мне не получится.
    setVisible(true) для фрейма делаешь до добавления элементов или после?

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

    Также лучше указывать предпочтительные (минимальные) размеры окна явно.

    А лучше не использовать Swing.
    Ответ написан
  • Какую тему диплома на Java EE выбрать?

    @zelan
    Кратко обо мне не получится.
    Забей на диплом, самые успешные люди в IT не закончили свои вузы. Цукерберг, Джобс, Гейтс и др.
    Ответ написан
    2 комментария
  • Как одним слушателем обработать много кнопок?

    @zelan
    Кратко обо мне не получится.
    ActionListener l = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
    
                    //кнопка которая была нажата
                    JButton button = (JButton) e.getSource();
    
                    //идентификатор действия - предпочтительно использовать его
                    //естественно при создании кнопки необходимо установить этот идентификатор
                    String actionCommand = button.getActionCommand();
                    //или даже без кнопки можно
                   String actionCommand1 = e.getActionCommand();
                    
                    //среднячковый вариант
                    String name = button.getName();
                    
                    //крайний и отвратительный вариант
                    String text = button.getText();
                }
            };


    этот слушатель должен быть добавлен в каждую кнопку, и в нем нужно описать то, что необходимо сделать в зависимости от идентификатора.
    Ответ написан
    Комментировать
  • Где найти чужие проекты на Java для чтения кода и тренировки?

    @zelan
    Кратко обо мне не получится.
    Ответ написан
    Комментировать
  • Как вывести изображение на JFrame?

    @zelan
    Кратко обо мне не получится.
    У вас панель которую вы добавляете на фрейм имеет нулевые размеры, не забывайте.

    Сделайте так.
    JFrame fr = new JFrame();
    //устанавливаем абсолюбтное позиционирование на фрейме
    fr.setLayout(null);
    fr.setSize(500,500);
    
    Main m = new Main();
    //устанавливаем размеры и координаты компонента для размещения в родителя с абсолютным позиционированием
    m.setBounds(0,0,500,500);
    fr.add(m);
    
    //обязательная вещь, говорит о том что когда ты закроешь окно - и приложение тоже должно закрыться, если этого не сделать, то после закрытия окна приложение продолжит работу и будет висеть в памяти
    fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fr.setVisible(true);


    Если есть возможность не пользуйся свингом а сразу иди на JavaFX
    Ответ написан
    1 комментарий
  • 2 вопроса по функциям. Python?

    @zelan
    Кратко обо мне не получится.
    Списки в питоне передаются по ссылке. Это значит, что передавая список в функцию, будет меняться переданный список, а не создаваться "копия" внутри функции.

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

    @zelan
    Кратко обо мне не получится.
    Метод, который принимает на вход функциональный интерфейс(лямбду с кодом), внутри метода проверяется условие, и в зависимости от условия лямбда выполняется или нет.
    Ответ написан
    Комментировать
  • Как добавить кнопку кодом в javaFX?

    @zelan
    Кратко обо мне не получится.
    Попробуй так:

    Pane root = (Pane) FXMLLoader.load(getClass().getResource("sample.fxml"));
    Ответ написан
    1 комментарий
  • Как правильно собрать hibernate проект в Gradle?

    @zelan
    Кратко обо мне не получится.
    compile "org.hibernate:hibernate:3.5.4-Final"
    compile "org.hibernate:hibernate-core:5.2.1.Final"

    да и вообще смотрю версии у тебя в разнобой идут. Они там от версии к версии переделывают все очень сильно, могут переместить/удалить классы. Пользоваться нужно всеми зависимостями одной версии.

    в 3.5.4 может и не быть такого класса, поменяй версию на 5.2.1.

    И вообще новичку лучше найти самые свежие примеры и повторять их полностью, либо пользоваться официальной документацией к текущей версии.
    Ответ написан
  • Почему моя java программа скомпилировалась, но не запускается?

    @zelan
    Кратко обо мне не получится.
    ссылка

    глава "Пишем программу Hello, World!", все показано и расписано как и почему именно так компилировать и запускать через командную строку. А лучше целиком прочти.
    Ответ написан
    1 комментарий
  • Как можно передавать в метод объекты разных классов?

    @zelan
    Кратко обо мне не получится.
    Те объекты которые ты хочешь передавать - должны ли они по логике твоей программы иметь общие методы (чтобы воспользоваться ТОЛЬКО ими в методе, в который ты передаешь объект) или ты хочешь передавать совершенно разные объекты?
    Update:
    смотри, есть такая штука как интерфейс

    Например есть 2 класса Cat и Dog. И есть действия которые и тот и другой обязаны делать (по разному) но с определенным результатом. Например это действие - поедание котлет, при этом если есть результат (то он должен быть единообразным) или его быть не должно вовсе (void). Таким образом классы должны выглядеть примерно так (опуская другие вещи)

    class Cat{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }
    
    class Dog{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }


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

    Соответственно иметь 2 метода у бабули не хочется:
    class GrandMa{
     public void feedCat(Cat cat){}
     public void feedDog(Dog dog){}
    }


    Вот тут и появляются интерфейсы. Мы видим, что и кот и пес жрут котлеты. Давай скажем что они как животные должны их (котлеты) поедать - это интерфейс.

    interface BeafEater{
      int eatBeaf(int weight);
     }
    //и скажем что и кот и пес - пожиратели котлет и они умеют их есть
    
    class Cat implements BeafEater{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }
    
    class Dog implements BeafEater{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }


    Все, теперь бабуля будет рада она будет рассматривать животных как пожирателей котлет, а не как кота или собаку.

    class GrandMa{
     public void feedBeafEater(BeafEater BeafEater){
       int weightBeaf = 5;
       int shit = beafEater.eatBeaf(weightBeaf ); //кормим поедателя котлет, колучаем какахи
       cleanToilet(shit ); //бабушка убирает какахи
    }
    
    }


    Все, просто передаешь в бабушке кота или пса и она их кормит

    public static void main(String[] args){
    
     GrandMa grandMa = new GrandMa();
     Cat cat = new Cat();
     Dog dog = new Dog;
     
    //напоминаю и кот и пес - рассматриваются бабушкой как пожиратели котлет, ей важно чтобы они поодерживали определенный интерфейс (умели делать определенные вещи)
    grandMa.feedBeafEater(cat);
    grandMa.feedBeafEater(dog);
    
    }
    Ответ написан
    3 комментария
  • Установка Java 8 b SDK на Win 8.1?

    @zelan
    Кратко обо мне не получится.
    1. открой диспетчер, убей все процессы в которых есть слово java (если есть).
    2. перезапусти комп.
    3. повтори пункт 1.
    4. запусти установку

    Откуда качал jdk?
    Ответ написан