Я обнаружил, что класс FileHandler
из Logger
не работает с прямой косой чертой, однако я прочитал на этом сайте, что прямая косая черта может использоваться в Windows с Java без проблем.
Я обнаружил, что это проблемный бит кода:
baseDir="C:/ets/phone/log/";
System.out.println("Basedir is:"+baseDir);
fh = new
FileHandler(baseDir+File.separator+"LogFile.%g.txt",1024000,5,true);
Сбой из-за следующей ошибки:
Basedir is:C:/ets/phone/log/
java.nio.file.NoSuchFileException: C:ets\phone\log\LogFile.0.txt.lck
at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.WindowsFileSystemProvider.newFileChannel(Unknown Source)
at java.base/java.nio.channels.FileChannel.open(Unknown Source)
at java.base/java.nio.channels.FileChannel.open(Unknown Source)
at java.logging/java.util.logging.FileHandler.openFiles(Unknown Source)
at java.logging/java.util.logging.FileHandler.<init>(Unknown Source)
at java.logging/java.util.logging.FileHandler.<init>(Unknown Source)
at LogMe.<init>(LogMe.java:28)
at ETSServer.main(ETSServer.java:198)
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Unknown Source)
at java.logging/java.util.logging.Logger.addHandler(Unknown Source)
at LogMe.<init>(LogMe.java:40)
at ETSServer.main(ETSServer.java:198)
Если заменить косые черты на File.seperator
, оно работает.Это ошибка?Должен ли я сообщить об этом?
baseDir="C:/ets/phone/log/";
baseDir=baseDir.replace("/",File.separator);
System.out.println("Basedir is:"+baseDir);
fh = new FileHandler(baseDir+File.separator+"LogFile.%g.txt",1024000,5,true);