Название говорит само за себя, но вот еще несколько деталей. Я экспортировал свою 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++;
}
}
}