Я использую сканер для чтения строк из файла и замены текста в каждой строке на основе заданного шаблона. Это делается внутри API. Моя программа многопоточная. Сразу несколько потоков могут вызывать этот конкретный API.сбой программы java при инициализации сканера
Ниже приводится строка инициализации строки развертки, где нить аварии:
public static void replaceInFile(Properties replacements, Path targetFile) {
...
Scanner in = new Scanner(targetFile, "UTF-8");
...
}
Я уверен, что ни один файл не будет доступен на двух потоков одновременно. Может ли кто-нибудь намекнуть мне в правильном направлении относительно того, что происходит?
UPDATE:
public Void call() throws Exception {
Iterator it = paths.iterator();
while(it.hasNext()){
try {
String filePath = it.next().toString();
//BuildUtil replacer = new BuildUtil();
BuildUtil.replaceInFile(replacements, Paths.get(filePath));
} catch(Exception e) {
e.printStackTrace();
}
}
Это вызов() нити. Теперь я замечаю, что он показывает «Кадр недоступен» даже перед тем, как войти в метод replaceInFiles BuildUtils, а иногда и после входа туда. Я не могу понять, что не так. Основной поток выходит, я думаю, но ничего не вижу здесь странно, что должно заставить его выйти неожиданно.
Предполагая, что «сбой» вы имеете в виду бросает исключение, вы можете включать в себя сведения об исключении – Misha
I «Извините, я имел в виду, что программа просто выходит. Мой отладчик говорит что-то в строках «рамки недоступны» ... – AshwiniR
Думаю, вам нужно поделиться больше кода здесь. Все, что основано на выше двух строках, будет догадкой ... – Peeyush