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
Это перенаправляет ввод в источник, с которого вы начали командную процедуру, обычно на ваш терминал.