Java BufferedReader openvms

Я новичок в JAVA и разрабатываю свою первую программу. Я использую Eclipse Luna на ПК с Windows 7. Версия JAVA, под которую я компилирую, - 1.4.2, поскольку это версия JAVA в целевой системе, которую я не могу изменить. Целевая система работает под управлением HP OpenVMS.

На ПК я просто пытаюсь получить строку ввода с клавиатуры, а затем распечатать ее. На ПК работает нормально. Затем я Export -> Runnable JAR в окно OpenVMS и запускаю его там. Когда я это сделаю, я получаю приглашение Enter Input String:. Если я не касаюсь клавиатуры, это быстро меняется на Enter Input String: String is null, и на этом программа просто завершается. Код показан ниже. Может кто подскажет, что я делаю не так?

Код JAVA

package test;

import java.io.BufferedReader;                                             
import java.io.IOException;                                                
import java.io.InputStreamReader;                                          

public class test {

    public static void main(String[] args) throws IOException {          

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("Enter input string: ");           
        String s = br.readLine();           
        System.out.println("String is " + s);           
    }   
}

В поле openVMS я запускаю этот командный файл

$ set file/attr=(rfm:stmlf,rat:cr) xx2.jar                                       
$ java -cp xx2.jar test.test

И результат этого выглядит как

$ @test                                                                         
$ Enter input string: String is null

person user2699504    schedule 11.06.2015    source источник
comment
Почему бы не использовать сканер для ввода данных?   -  person almightyGOSU    schedule 11.06.2015


Ответы (1)


Вы запускаете сценарий DCL, также известный как командная процедура. То есть ввод перенаправляется в ваш командный файл. Похоже, что команда Java - последняя строка в командном файле, поэтому readLine() получает EOF.

Попробуйте выполнить команду Java из командной строки DCL или измените командную процедуру на

$ set file/attr=(rfm:stmlf,rat:cr) xx2.jar                                     
$ define/user sys$input sys$command                                             
$ java -cp xx2.jar test.test

Это перенаправляет ввод к источнику, из которого вы запустили командную процедуру, обычно к вашему терминалу.

person user2116290    schedule 11.06.2015
comment
Привет, user2116290, ваше предложение сработало как шарм. Спасибо за ваш вклад - очень признателен - person user2699504; 12.06.2015