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

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

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

Другие вопросы по тегам