Форум программистов, компьютерный форум, киберфорум
JavaFX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.04.2020
Сообщений: 1
1

Запуск Jar файла

15.04.2020, 16:29. Просмотров 630. Ответов 2


Здравствуйте, пишу простое приложение на java в IntelliJ IDEA 2018 3.6, которое проверяет несколько файлов word на наличие в них указанного слова. В среде все прекрасно запускается и работает, однако после того, как собрал артифакты (JavaFXApp и Jar-ник), при попытке запуска второго, выдает ошибку: "A JNI error has occured, please check your installation and try again". в проект вроде бы все включил. Если запускать из командной строки - говорит "Error: Could not find or load main class main.pack.Main". В проекте 2 файла .class.

Исходный код Main.java:

Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main.pack;
 
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
 
public class Main extends Application {
 
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("views/input.fxml"));
        primaryStage.setTitle("WordApp");
        primaryStage.setScene(new Scene(root, 573, 386));
        primaryStage.setResizable(false);
        primaryStage.show();
    }
 
 
    public static void main(String[] args) {
        launch(args);
    }
}



Исходный код Controller.java:

Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package main.pack;
 
        import java.io.File;
        import java.io.IOException;
        import java.net.URL;
        import java.nio.file.Files;
        import java.nio.file.Path;
        import java.nio.file.Paths;
        import java.nio.file.StandardCopyOption;
        import java.util.ArrayList;
        import java.util.ResourceBundle;
 
        import javafx.collections.FXCollections;
        import javafx.collections.ObservableList;
        import javafx.fxml.FXML;
        import javafx.scene.control.Button;
        import javafx.scene.control.ListView;
        import javafx.stage.DirectoryChooser;
        import javafx.stage.Stage;
        import javafx.scene.control.TextField;
 
        import javax.swing.JOptionPane;
 
        import com.aspose.words.Document;
 
public class InputController {
    /*Константы*/
    static final int INPUT_VIEW = 1;
    static final int RESULT_VIEW = 2;
 
    /*Поля класса*/
    ArrayList<File> fileList = new ArrayList<File>(); /*ССписок файлов в директории*/
    ArrayList<File> resultList = new ArrayList<File>(); /*ССписок файлов в директории*/
    /*Элементы графического интерфейса*/
    @FXML
    private ResourceBundle resources;
    @FXML
    private URL location;
    @FXML
    private Button folderButton;
    @FXML
    private TextField searchField;
    @FXML
    private ListView<String> filesInCatalog;
    @FXML
    private Button searchButton;
    @FXML
    private ListView<String> outputFiles;
    @FXML
    private Button saveButton;
 
 
    /*Методы класса обработчика событий*/
    @FXML
    void initialize() {
        /*Настройка элементов графического интерфейса*/
        filesInCatalog.setEditable(false);
        outputFiles.setEditable(false);
        saveButton.setDisable(true);
 
        /*Обработка событий*/
        folderButton.setOnAction(event -> {
            getWordFilesInDir(getDir("Выберите каталог для поиска")); /*Вызов функции рекурсивного поиска файлов word по директории. Парметр - функция вызова окна проводника, по итогам которой возвращается директория*/
            setFileListData(fileList,INPUT_VIEW);
            folderButton.setDisable(true);
 
//            String[] names = fileList
        }); /*Обработка нажатия кнопки выбора директории поиска*/
        searchButton.setOnAction(event -> {
            String searchText = searchField.getText().trim();
            resultList.clear();
            if (!searchText.isEmpty() && searchText != null) {
                for (int i = 0; i < fileList.size(); i++) {
                    try {
                        Document doc = new Document(fileList.get(i).getAbsolutePath());
                        String text = doc.getText();
                        if (text.indexOf(searchText) != -1) resultList.add(fileList.get(i));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (resultList.size() != 0) {
                    setFileListData(resultList, RESULT_VIEW);
                    searchButton.setDisable(true);
                    saveButton.setDisable(false);
                }
                else {
                    JOptionPane.showMessageDialog(null, "Поиск не дал результатов");
                }
            }
            else JOptionPane.showMessageDialog(null, "Введите строку для поиска");
 
 
        }); /*Обработка нажатия кнопки поиска в файлах*/
        saveButton.setOnAction(event -> {
            File outputFiles = getDir("Выберите директорию для сохранения");
 
            System.out.println(outputFiles.getAbsolutePath());
            resultList.forEach(a -> {
                String pathName = outputFiles.getAbsolutePath() + "\\" + a.getName();
                Path dest = Paths.get(pathName);
                try{
                    Files.copy(a.toPath(), dest, StandardCopyOption.REPLACE_EXISTING);
                } catch(Exception ex) {
                    ex.printStackTrace();
                }
            });
            try {
                Runtime.getRuntime().exec("explorer.exe /select," + outputFiles.getAbsolutePath() + "\\" + resultList.get(0).getName());
                saveButton.getScene().getWindow().hide();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }); /*Обработка нажатия кнопки записи найденных файлов*/
    } /*Инициализация обработчика событий. Кнопки и тому подобное*/
 
    /*Геттеры*/
    private File getDir(String header) {
        Stage view = new Stage(); /*Создание окна*/
        DirectoryChooser directoryChooser = new DirectoryChooser(); /*Создание проводника*/
        directoryChooser.setTitle(header); /*Настройка проводника*/
        File dir = directoryChooser.showDialog(view); /*Выбор директории*/
        return dir;
    } /*Возвращает выбранную в проводнике директорию*/
    private void getWordFilesInDir(File dir) {
        File[] files = dir.listFiles();
        for (File file : files) {
            if (!file.isDirectory()) {
                if (file.getName().endsWith(".doc") || file.getName().endsWith(".docx"))
                    fileList.add(file);
            } else getWordFilesInDir(file);
        }
    } /*Рекурсивное добавление файлов word в ArrayList - свойство класса*/
    /*Сеттеры*/
    private void setFileListData(ArrayList<File> files, int number) {
        String[] names = new String[files.size()];
        for (int i = 0; i < files.size(); i++) {
            names[i] = files.get(i).getAbsolutePath();
        }
        ObservableList<String > list = FXCollections.observableArrayList(names);
        if (number == INPUT_VIEW) filesInCatalog.setItems(list);
        else if (number == RESULT_VIEW) outputFiles.setItems(list);
    } /*Добавить элементы в ListView из аргумента files*/
}




Выручайте, сил уже никаких нет искать ответ ...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2020, 16:29
Ответы с готовыми решениями:

Запуск jar архивов
Всем привет ситуация такая: У меня есть Jar архив с примерно таким классом: class MyClass...

Запуск jar в NetBeans
Доброго времени суток! Решил изучать Java, написал простейшую программку(считает квадратное...

Создание jar файла
Доброго времени суток, столкнулся с такой проблемой: создаю jar файл в IntelliJ IDEA (или в...

Запуск jar файла
Здравствуйте. Кто-нибудь может подсказать, что делать, если при попытке запуска jar файла (как...

2
143 / 67 / 17
Регистрация: 27.02.2016
Сообщений: 299
22.04.2020, 15:55 2
alex163216, ошибку опубликуйте а то кто же вам поможет
экстрасенсы на карантине
0
26 / 18 / 8
Регистрация: 18.05.2016
Сообщений: 72
29.04.2020, 03:47 3
Доброй ночи.
Скорее всего вы неправильно собираете проект в jar.
Если вы используете java > 8 то вам необходимо собрать jar файл со всеми зависимостями, то есть использовать maven assembly plugin.
Также необходимо проверить версию джавы при запуске из консоли и ту что вы указали в pom.xml если java version < java которую вы указали в помнике то может быть такая проблема.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2020, 03:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Запуск jar-файла
Скажите плииз, почему напрочь не выполняется класс из jar-файла???? Вот, собственно содержание...

Запуск файла *jar
Всем привет. Есть .jar файл который нужно открыть из программы. Если открывать так:...

Запуск .Jar файла
добрый день программисты создал проект который заносит, считывает, удаляет данные из SQL. Когда...

Запуск jar файла в окне C#
Здравствуйте, знаю что через C# можно вызвать процесс javaw и выполнить jar файл в вызванном...

Запуск jar файла с параметрами
При попытке запустить файл через .bat файлjava -Xincgc -Xmx700M -Xms700M...

Запуск jar файла на Mac os
Доброго времени суток! Уже второй день пытаюсь запустить jar файл через терминал. Пробовал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.