.jar не работает, когда передан действительный файл в аргументах - PullRequest
0 голосов
/ 11 сентября 2018

Я создаю приложение, которое принимает ввод через XML-файл и выполняет на его основе ряд операций.Я знаю, что приложение работает, потому что я могу предоставить файл для XML непосредственно в коде, и оно будет работать так, как должно.

Проблема возникает, когда я пытаюсь передать путь к файлу XML через командную строкуАргументы упакованного .jar.

Моя главная выглядит так:

    public static void main(String[] args) {
    LogWriter.openWriter();

    LogWriter.log("Main start.");
    Controller controller = new Controller();
    LogWriter.log("Controller created.");

    List<Parameters> parameters = new ArrayList<Parameters>();
    for (int i = 0; i < args.length; i++) {
        LogWriter.log("Got arg: " + args[i]);
        File file = new File(args[i]);
        LogWriter.log("Parameter file: " + file.getAbsolutePath());
        if (file.exists()) {
            LogWriter.log("File exists. Getting parameters.");
            Parameters para = controller.getParameters(file);
            LogWriter.log("Attempting to add parameters.");
            parameters.add(para);
            LogWriter.log("Added parameters.");
        } else {
            LogWriter.log("File is not valid.");
        }
    }
}

Сценарий, который я использую для запуска, выглядит так:

java -jar PDFRedacter.jar C:\Users\je\Downloads\XMLConfig.xml

Что такоедействительно странным является то, что он дает сбой только тогда, когда я даю ему правильный файл.Если я предоставляю неверный файл, он запускается и регистрирует, что файл является недействительным, и, как уже упоминалось, он также запускается, если я ввожу действительный файл непосредственно в коде.

Однако с правильным путем, записанным впакет, даже не первый «Главный запуск» регистрируется, поэтому код не запускается вообще.Возможно, это какая-то проблема с доступом?

РЕДАКТИРОВАТЬ: регистратор не моя проблема, он работает как задумано, как с действительным файлом, так и без него.Пример журнала 'Invalid file':

Основной запуск.
Создан контроллер.
Получил аргумент: C: \ Users \ je \ Downloads \ XMLConfig
Файл параметров: C:\ Users \ je \ Downloads \ XMLConfig
Файл недействителен.

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

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Оказывается, проблема была просто в упаковке моего.банку, не хватает зависимости.Как сказал кто-то еще, мой регистратор только сбрасывал в самом конце исключения, и поэтому ничего не писал.Спасибо за ваши комментарии.

1 Ответ

0 голосов
/ 11 сентября 2018

Как подозревал Томас, должна быть другая причина сбоя программы, потому что ваша функция должна работать.Если вы уменьшите его до определения того, существует ли файл и убедитесь, что он работает, добавьте список параметров, контроллер и регистратор один за другим, вы можете найти причину сбоя .´

Вот пример, который япротестировано - и оно отлично работает для всех существующих файлов или каталогов.

public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        System.out.println("Got arg: " + args[i]);
        File file = new File(args[i]);
        System.out.println("Parameter file: " + file.getAbsolutePath());
        if (file.exists()) {
            System.out.println("File exists. Getting parameters.");
        } else {
            System.out.println("File is not valid.");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...