2016-09-14 2 views
0

Имеет сценарий оболочки, который компилирует/выполняет несколько приложений Java и захватывает выходные данные каждого приложения. в файл.

Сценарий работал нормально до тех пор, пока не наткнулся на ряд приложений, требующих ввода через класс Scanner в Java.bash script запустить Java-приложение, которое использует сканер

Одна вещь, о которой я думал, - это grep .java-файл для ключевого слова «Сканер» и пропустить эти файлы.

Любые другие предложения о том, как преодолеть эту проблему, используя простой сценарий оболочки ole? Источник не может быть изменен.

(не муравей, специалист или другие менеджеры строят, пожалуйста)

+0

Вы должны отправить соответствующий ввод через stdin. – SLaks

+0

как вы знаете тип ввода? (int, String, boolean, byte) ... каждое приложение разработано по-разному. – user1798810

+1

Если вы не знаете, что ожидает ваше приложение, у вас нет надежды заставить его работать. – SLaks

ответ

0

Вы можете переопределить Сканер с пользовательской реализации, который не строит. Пример:

Структура каталога:

/Tester.java 
/java/util/Scanner.java 

Затем внутри Tester.java у вас есть:

import java.util.Scanner: 

class Tester { 
     public static void main(String[] args) { 
       Scanner scanner = new Scanner(System.in); 
       System.out.println(scanner.nextLine()); 
     } 
} 

А внутри Scanner.java у вас есть:

I'm Broken! 

Конечно «Я Разбитое !» не будет компилироваться, так что ваша программа сломается. Поэтому, когда вы скомпилируете, вы получите эту ошибку:

./java/util/Scanner.java:1: error: unclosed character literal 
I'm Broken! 
^ 
Tester.java:1: error: cannot access Scanner 
import java.util.Scanner; 
       ^
    bad source file: ./java/util/Scanner.java 
    file does not contain class java.util.Scanner 
    Please remove or make sure it appears in the correct subdirectory of the sourcepath. 
+0

решение. спасибо. – user1798810

Смежные вопросы