Java-программа не записывает в файл при запуске через консоль Windows - PullRequest
0 голосов
/ 15 октября 2019

Название говорит само за себя, но вот еще несколько деталей. Я экспортировал свою java-программу как исполняемый jar через eclipse. Во время выполнения он регистрирует данные, которые должны быть сохранены в текстовом файле, и в дополнение к этому некоторые сведения выводятся на консоль только для информационных целей.

Когда я запускаю флягу с помощью двойного щелчка по ней, онасоздает файл, когда он не существует, и выполняет свою работу аккуратно, но, очевидно, не выводит на консоль, потому что его нет. Чтобы получить вывод на консоль, я попытался запустить jar через консоль windows с помощью этой команды: java -jar c:\path-to-the-jar\myJar.jar. Он работает и выводит мои результаты на консоль, но теперь он не создает файл и не записывает в существующий. Я пытался запустить консоль как администратор, но это не было решением. Я также попробовал эту команду: javaw -jar c:\path-to-the-jar\myJar.jar, но затем она не выводится на консоль, НО она записывает в файл ...

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

Заранее спасибо! -Phil

Вот мой код, который обрабатывает вывод и запись файла

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.nio.charset.StandardCharsets;

class DataLog {
    private Path path;
    private LocalDate actualDate;
    private long errorCount = 0;

    DataLog() {
        try
        {
            path = Paths.get("LSV_DataLog_" + LocalDate.now() + ".txt");  //e.g. LSV_DataLog_2019-10-17.txt when its october 17th  2019
            actualDate = LocalDate.now();

            String str = "***" + LocalDateTime.now().toLocalDate().toString() + " - " + LocalDateTime.now().toLocalTime() + "***"; 

            System.out.println(str);
            Files.write(path, (str + System.lineSeparator()).getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        } catch (IOException e) {
            e.printStackTrace();
            errorCount++;
        } catch (Throwable t) {
            t.printStackTrace();
            errorCount++;
        }
    }

    void addData(long val) {
        try
        {
            if(!actualDate.equals(LocalDate.now())) {
                actualDate = LocalDate.now();
                path = Paths.get("LSV_DataLog_" + LocalDate.now() + ".txt");   //e.g. LSV_DataLog_2019-10-17.txt when its october 17th  2019
            }

            String str = LocalDate.now() + ", " + LocalDateTime.now().toLocalTime() + " Value: " + val;
            System.out.println(str);
            Files.write(path, (str + System.lineSeparator()).getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        } catch (IOException e) {
            e.printStackTrace();
            errorCount++;
        } catch (Throwable t) {
            t.printStackTrace();
            errorCount++;
        }
    }

    void addInfo(String info) {
        try
        {
            if(!actualDate.equals(LocalDate.now())) {
                actualDate = LocalDate.now();
                path = Paths.get("LSV_DataLog_" + LocalDate.now() + ".txt");   //e.g. LSV_DataLog_2019-10-17.txt when its october 17th  2019
            }

            String str = LocalDate.now() + ", " + LocalDateTime.now().toLocalTime() + ", " + info;
            System.out.println(str);
            Files.write(path, (str + System.lineSeparator()).getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        } catch (IOException e) {
            e.printStackTrace();
            errorCount++;
        } catch (Throwable t) {
            t.printStackTrace();
            errorCount++;
        }
    }
}

1 Ответ

0 голосов
/ 16 октября 2019

было бы полезно перенаправить на этот набор ответов о приложении java consol в eclips, это не значит, что ваш вопрос дублирован, но вы можете иметь общую концепцию между двумя вопросами

Java-консольпрограмма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...